首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最干净的多条件短路评估分配方法

最干净的多条件短路评估分配方法
EN

Stack Overflow用户
提问于 2020-03-11 17:25:04
回答 2查看 244关注 0票数 1

我正在尝试基于客户端手头的数据构建一个JSON对象。

理想情况下,如果可用,则选择address数据,如果不可用,则选择cart数据,否则为null。

在这里,数据是从localStorage检索的,但是我遇到了问题,addressescartnull时解决了以下错误。

无法读取null的属性“长度”

无法读取未定义的属性“idShipTo”

代码语言:javascript
复制
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值。

代码语言:javascript
复制
this.request = {
  address: {
    shipToAddLine: (addresses) ? addresses[0].shipToAddLine || (cart) ? cart.shipToAddLine || null,
    shipToCityStZip: (addresses) ? addresses[0].shipToCityStZip || (cart) ? cart.shipToCityStZip || null
  }
}

这是否可以在JS中使用干净的(一行)语法,或者我是否必须将赋值放在if / else块中?

代码语言:javascript
复制
let shipToAddLine;
if (addresses) shipToAddLine = addresses[0].shipToAddLine;
else if (cart) shipToAddLine = cart.shipToCityStZip;
else shipToAddLine = null;

等等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-11 17:29:24

你可以连锁三值运算符

代码语言:javascript
复制
    shipToAddLine: addresses ? addresses[0].shipToAddLine : (cart ? cart.shipToAddLine : null),
票数 1
EN

Stack Overflow用户

发布于 2020-03-11 17:38:02

如果不存在,可以将其初始化为适当的空值。

代码语言:javascript
复制
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].shipToAddLinecart.shipToAddLine之前检查

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60641470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档