我正在尝试基于客户端手头的数据构建一个JSON对象。
理想情况下,如果可用,则选择address数据,如果不可用,则选择cart数据,否则为null。
在这里,数据是从localStorage检索的,但是我遇到了问题,addresses和cart在null时解决了以下错误。
无法读取null的属性“长度”
无法读取未定义的属性“idShipTo”
let cart = JSON.parse(localStorage.getItem('shopping-cart'));
let addresses = JSON.parse(localStorage.getItem('customer-address'));
this.request = {
address: {
shipToAddLine: addresses[0].shipToAddLine || cart.shipToAddLine || null,
shipToCityStZip: addresses[0].shipToCityStZip || cart.shipToCityStZip || null
}
}我想使用类似三元运算符的东西,但是使用多个if / use值。
this.request = {
address: {
shipToAddLine: (addresses) ? addresses[0].shipToAddLine || (cart) ? cart.shipToAddLine || null,
shipToCityStZip: (addresses) ? addresses[0].shipToCityStZip || (cart) ? cart.shipToCityStZip || null
}
}这是否可以在JS中使用干净的(一行)语法,或者我是否必须将赋值放在if / else块中?
let shipToAddLine;
if (addresses) shipToAddLine = addresses[0].shipToAddLine;
else if (cart) shipToAddLine = cart.shipToCityStZip;
else shipToAddLine = null;等等。
发布于 2020-03-11 17:29:24
你可以连锁三值运算符
shipToAddLine: addresses ? addresses[0].shipToAddLine : (cart ? cart.shipToAddLine : null),发布于 2020-03-11 17:38:02
如果不存在,可以将其初始化为适当的空值。
let cart = JSON.parse(localStorage.getItem('shopping-cart')) || {};
let addresses = JSON.parse(localStorage.getItem('customer-address')) || [{}];
this.request = {
address: {
shipToAddLine: addresses[0].shipToAddLine || cart.shipToAddLine || null,
shipToCityStZip: addresses[0].shipToCityStZip || cart.shipToCityStZip || null
}
}如果cart为null,则初始化为空对象,如果address最初为null,则初始化为具有空对象的数组。那么您就不需要在addresses[0].shipToAddLine和cart.shipToAddLine之前检查
https://stackoverflow.com/questions/60641470
复制相似问题