在多种条件下分配短路评估的最简洁方法
Cleanest way to assign with short circuit evaluation on multiple conditions
我正在尝试根据客户手头的数据构建一个 JSON 对象。
理想情况下,它会 select 地址数据(如果可用),然后是购物车数据(如果不可用),否则为空。
这里的数据是从localStorage中获取的,但是我运行遇到了问题,addresses
和cart
解决了null
.
时的以下错误
Cannot read property 'length' of null
Cannot read property 'idShipTo' of undefined
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 / else 值。
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;
等...
您可以链接三元运算符
shipToAddLine: addresses ? addresses[0].shipToAddLine : (cart ? cart.shipToAddLine : null),
如果不存在,您可以使用将其初始化为适当的空值
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
之前进行检查
我正在尝试根据客户手头的数据构建一个 JSON 对象。
理想情况下,它会 select 地址数据(如果可用),然后是购物车数据(如果不可用),否则为空。
这里的数据是从localStorage中获取的,但是我运行遇到了问题,addresses
和cart
解决了null
.
Cannot read property 'length' of null
Cannot read property 'idShipTo' of undefined
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 / else 值。
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;
等...
您可以链接三元运算符
shipToAddLine: addresses ? addresses[0].shipToAddLine : (cart ? cart.shipToAddLine : null),
如果不存在,您可以使用将其初始化为适当的空值
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