javascript - Javascript 迭代和检查数组元素的最佳方法
问题描述
有没有更好的方法来编写下面的代码。所以我希望如果任何行有无效字段,我想立即将结果返回为“false”,即我不想执行代码或检查循环中的任何其他行。
anyRowInvalid: function() {
var items = this.get('sectionInformation.items');
var isValid = true;
for (let i=0; i < items.length; i++) {
var gridItemObj = {};
Object.keys(items[i]).forEach(function(itemkey) {
if (typeof items[i][itemkey] === 'object') {
if ((items[i][itemkey].valid) && (items[i][itemkey].valid === false)) {
isValid = false;
}
}
});
}
return isValid;
},
解决方案
您可以使用数组方法来简化循环every
。
anyRowInvalid: function() {
var items = this.get('sectionInformation.items');
return items.every(item => {
return Object.values(item).every(value => { // valid if:
return !value // is falsy
|| typeof value != "object" // or is non-objects
|| !("valid" in value) // or without "valid" property
|| value.valid; // or truthy "valid" property
});
});
},
every
当第一个虚假值被击中时自动短路。下面的示例在nr
设置为之后停止迭代4
,因为这是第一次nr < 4
评估为假值。
const array = Array.from({length: 10}, (_, index) => index);
array.every(nr => {
console.log(nr);
return nr < 4;
});
推荐阅读
- php - 为我的电子邮件模板使用默认的 Laravel 电子邮件布局
- json - 如何从 JSON 创建以空格分隔的字符串?
- c# - 詹金斯在看起来像 Nuget 恢复的步骤上构建失败
- r - 在测试功能中使用 tinytest
- google-analytics - 跟踪 ID 丢失或未在 Google Analytics(分析)中显示
- vba - 重复后vba中的Sub问题
- jquery - 使用 jQuery 禁用双击事件
- sql - 将单行中的数据拆分为多条记录
- python-3.x - 如何在 guizero/tkinter python 3 中将图标添加回任务栏?
- java - 无法在 Kotlin 中使用 Apache Commons-IO