检查对象属性是否全部为假

时间:2018-11-22 14:31:24

标签: javascript typescript

我想检查对象的所有某些属性是否都设置为特定值。但是我怎样才能很好地做到这一点呢?

输出(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”

4 个答案:

答案 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)
}