【发布时间】:2021-07-28 02:31:27
【问题描述】:
我有一个包含 15 个对象的数组,每个对象都包含一个键值对。如何循环遍历这个数组以检查每个对象中的键值对是否具有特定值,例如“是”?请记住,我已经循环了 25 个对象,并且每个对象中都有这个数组。
这是我的代码:
let results = Object.keys(halls);
let filtered = [];
results.filter(key => {
if (postcode == halls[key]['Location'][3]['Postcode'] && suburb == "") {return true;};
arrayC.map((x) => {
for (let i = 0; i < 15; i++) {
if (halls[key]['Facility'][i][`${x}`] == "Yes") {return true;}
};
});
return false;
}).forEach(key => filtered.push([halls[key]]));
我认为问题可能在于我如何在 for 循环中返回 true,但我不确定。
感谢任何帮助! (不,我不能改变数据结构)
更新
工作代码:
for (let a = 0; a < 15; a++) {
let x = arrayC[a];
for (let i = 0; i < 15; i++) {
if (halls[key]['Facility'][i][`${x}`] == "Yes") {return true;}
};
};
【问题讨论】:
-
您的直觉似乎是正确的:在
map回调中返回true不会在filter级别返回。如果您想这样做,请考虑使用for循环 -
您可以使用
.every()而不是内部.map,尽管您必须返回false,然后根据every 的值返回另一个。尼克建议的工作,你可以有你命名的循环来打破。您还可以设置外部布尔条件以根据需要中断以正确返回。
标签: javascript arrays object filter foreach