如果数组的一个元素在不使用迭代器的情况下不为空,则返回false

时间:2019-05-08 09:49:45

标签: javascript typescript

我有一个接收字符串数组的方法,如果数组元素之一为false,我想返回false。

 myMethod(attrs: Array<String>) {
   for (const element of attrs) {
      if (!element) {
        return false;
      }
    }

    return true;
}

是否可以简化此代码?

2 个答案:

答案 0 :(得分:2)

尝试一下:

var attrs =[true,true,false];

var result = !attrs.some( elm => (elm === false) );
    
console.log(result);

答案 1 :(得分:1)

JavaScript Array具有一种检查每个项目是否满足谓词的方法:every

示例:

const arr = [1, 2, null];

const every = arr.every(item => item !== null); // Check if every item is not-null. This will be false

可以通过将项目强制转换为布尔值来缩短:

const every2 = arr.every(item => Boolean(item)); // This will give false for 0, null, undefined, etc.

通过将布尔值构造函数传递给回调函数,甚至更短,它将把项目传递给它的构造函数

const every2 = arr.every(Boolean);

还要检查方法findsome

请记住,它确实使用了迭代器,只是JS内置函数在后台 进行了操作。