【问题标题】:check if object property are all false [duplicate]检查对象属性是否全部为假[重复]
【发布时间】:2018-11-22 22:55:36
【问题描述】:

我想检查对象的所有某些属性是否都设置为特定值。但是我怎样才能以一种好的方式实现这一点呢?

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

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    你可以使用every:

    data.items.every(item => item.permission === 'Y')
    

    【讨论】:

      【解决方案2】:

      由于data.items是一个数组,你可以尝试使用Array.prototype.filter方法:

      data.items.filter(x => x.permission === 'Y').length === data.items.length
      

      【讨论】:

        【解决方案3】:

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

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

        (尚未实际测试此代码,但这应该可以)

        【讨论】:

          【解决方案4】:

          您可以从您的数组中使用array.filter,这将提供一个满足条件的新对象数组。

          使用 if else 条件检查过滤后的数组是否有任何元素 if filtersarray.length ===0 没有对象,这意味着每个对象属性权限都有Y

          如果长度为!=0(不等于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)
          }

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-12-26
            • 2014-05-08
            • 2018-01-01
            • 2017-10-09
            • 2014-08-22
            • 2013-11-28
            • 2020-05-08
            • 2020-06-15
            相关资源
            最近更新 更多