javascript - 如何改善条件中是否有物体

标签 javascript ecmascript-6

由于ES6的发布,我想改进代码:

响应示例:

// Ex: 1
response = false;
// Ex: 2
response = {};
// Ex: 3
response = {list: []};
// Ex: 4
response = {list: [{text: false}]};
// Ex: 5
response = {list: [{text: "some text"}]};

代码示例

if (response && response.list && response.list.length>0 && response.list[0] && response.list[0].text){
    // Some actions
}

if (response && response.list && response.list.length >= 64){
    // Some actions
}

如何使这段代码更短而不重复:

response && response.list && response.list.length>0 && response.list[0] && response.list[0].text

最佳答案

可以缩短为

try {
  if (response.list[0].text) ...
} catch (err) {}

但不建议用在对性能要求高的地方。

Lodash/Underscore get 已经具有此功能并且可以使用(作为单独的 lodash.get 包提供):

if (_.get(response, 'list[0].text')) ...

关于javascript - 如何改善条件中是否有物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42489524/

相关文章:

javascript - 如何根据嵌套对象数组中的键过滤对象数组?

javascript - slider 不工作,控制台上没有错误 - Javascript Vanilla

javascript - jquery中如何调用函数?

javascript - 我们是否仍然需要 ES6 中的原型(prototype)来让所有类实例共享一个方法副本?

ecmascript-6 - Eslint允许测试中的无关性

Javascript 将字符串转换为数字

javascript - 由于平台限制,无法更改 jquery 加载位置(在页脚中)。加载后需要在正文中加载脚本

javascript - 如何从流中获取数据?

javascript - 从 localStorage 存储和检索 Set

javascript - 未捕获的语法错误 : Unexpected identifier when trying to import React