我有一个接收字符串数组的方法,如果数组元素之一为false,我想返回false。
myMethod(attrs: Array<String>) {
for (const element of attrs) {
if (!element) {
return false;
}
}
return true;
}
是否可以简化此代码?
答案 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);
请记住,它确实使用了迭代器,只是JS内置函数在后台 进行了操作。