如何改善条件中是否有对象

时间:2017-02-27 15:28:08

标签: 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

2 个答案:

答案 0 :(得分:1)

可以将其缩短为

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

但不建议在性能关键的地方使用它。

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

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

答案 1 :(得分:0)

不幸的是,如果你不止一次需要obj,你就不能缩短standardize = function(obj){ obj$x <- obj$x / max(obj$x) obj } 但你可以将它放入函数的评论中提到的ss。

if-statement

您不需要在其他任何地方重复statement,您可以通过以下方式使用它:

function isResponseOk(response){
    return (response && response.list && response.list.length>0 && response.list[0].text);
}