代码之家  ›  专栏  ›  技术社区  ›  Sireini

检查对象属性是否全部为false[重复]

  •  -1
  • Sireini  · 技术社区  · 7 年前

    输出( 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"}
    

    "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 回复  |  直到 7 年前
        1
  •  4
  •   thedude    7 年前

    every :

    data.items.every(item => item.permission === 'Y')
    
        2
  •  1
  •   Tân    7 年前

    自从 data.items Array.prototype.filter 方法:

    data.items.filter(x => x.permission === 'Y').length === data.items.length
    
        3
  •  -1
  •   Gijs Beijer    7 年前

    let dataItems = Object.values(data.items);
    dataItems.filter(dataItem => dataItem.permission === 'Y').length === dataItems.length;

    Object.values函数将为您提供一个仅包含对象的数组。之后,当权限为Y时,我们过滤它们,只返回项目,并将该长度与实际长度进行比较。

    (尚未实际测试此代码,但应能正常工作)

        4
  •  -1
  •   Learner    7 年前

    从阵列中可以使用 array.filter ,它将提供满足条件的新对象数组。

    filteredarray.length==0没有对象,这意味着每个对象属性都具有权限 Y

    如果长度是=0(不等于零),某些对象属性权限具有另一个值,这意味着 N

    请参阅下面的代码。我希望这能解决你的问题。

    N 为了展示else的工作原理。您可以删除该对象。

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