我想检查对象的所有某些属性是否都设置为特定值。但是我怎样才能很好地做到这一点呢?
输出(data.items
)如下:
0: {id_menu: 1234, menunummer: "1", menu_naam: "test1", permission: "Y"}
1: {id_menu: 1235, menunummer: "2", menu_naam: "test2", permission: "Y"}
2: {id_menu: 1236, menunummer: "2", menu_naam: "test3", permission: "Y"}
但是如何检查所有data.items的权限属性是否设置为"Y"
我尝试过:
for(var i = 0; i < data.items.length; i++){
console.log('permissionMENU',data.items[i].permission);
if(data.items[i].permissie === "N"){
console.log('WORKS');
}
}
但是此方法会分别检查每个项目,如何检查所有项目的权限是否设置为“ Y”
答案 0 :(得分:4)
您可以使用every:
data.items.every(item => item.permission === 'Y')
答案 1 :(得分:1)
由于data.items
是一个数组,因此您可以尝试使用Array.prototype.filter方法:
data.items.filter(x => x.permission === 'Y').length === data.items.length
答案 2 :(得分:-1)
let dataItems = Object.values(data.items);
dataItems.filter(dataItem => dataItem.permission === 'Y').length === dataItems.length;
Object.values函数将为您提供仅包含对象的数组。之后,我们过滤掉它们,只在允许为Y时返回项目,然后将该长度与实际长度进行比较。
(尚未实际测试此代码,但这应该可以工作)
答案 3 :(得分:-1)
您可以在数组中使用array.filter,这将给出满足条件的新对象数组。
使用if else条件检查是否filteredarray有任何元素,如果 filteredarray.length === 0没有对象,这意味着每个对象属性权限都具有 Y 。
如果长度为!= 0(不等于零),则某些对象属性许可具有另一个值,表示 N 。这样您就可以打印出元素了。
请参见以下代码。我希望这能解决您的问题。
注意:我还添加了一个对象,该对象的权限属性为 N ,以显示其他情况。您可以删除对象。
let arr = [{id_menu: 1234, menunummer: "1", menu_naam: "test1", permission: "Y"},
{id_menu: 1235, menunummer: "2", menu_naam: "test2", permission: "Y"},
{id_menu: 1236, menunummer: "2", menu_naam: "test3", permission: "Y"},
{id_menu: 1236, menunummer: "2", menu_naam: "test3", permission: "N"}
]
let filteredArr = arr.filter(o => o.permission != "Y")
if(filteredArr.length === 0){
console.log("All properties has permission as Yes(Y)")
}else{
console.log("Some properties have permission has No(N) which are", filteredArr)
}