【问题标题】:How to check if any item in object matches any key in other array如何检查对象中的任何项目是否与其他数组中的任何键匹配
【发布时间】:2022-09-28 21:07:39
【问题描述】:

我想查看arr2 中的任何项目是否与arr1 中的任何顶级键(表单或资产)匹配。

第一个数组:

const arr1 = {
  forms: {
    permissions: {
      create: true,
      edit: true,
      delete: true,
    },
  },
  assets: {
    permissions: {
      create: true,
      edit: true,
      delete: true,
    },
  },
};

第二个数组:

const arr2 = [\"assets\", \"media\"];

我试过这个:

if (arr2 in arr1) {
    console.log(\"key is in contained in object\");
}

但这仅在arr2 中只有一项时有效。

    标签: javascript reactjs


    【解决方案1】:

    您可以获取对象的顶级键的数组,然后检查它们中的任何一个是否包含在另一个数组中。

    像这样:

    const arr1 = {
      forms: {
        permissions: {
          create: true,
          edit: true,
          delete: true,
        },
      },
      assets: {
        permissions: {
          create: true,
          edit: true,
          delete: true,
        },
      },
    };
    
    const arr2 = ["assets", "media"];
    
    function hasSomeTopLevelKey(object, arrayOfKeys) {
       return Object.keys(object)
       .some(topLevelKey => arrayOfKeys.includes(topLevelKey));
    }
    
    const x = hasSomeTopLevelKey(arr1, arr2)
    console.log(x)

    【讨论】:

      【解决方案2】:

      对于数组,使用Array#some 和使用Object#hasOwnProperty 的测试。

      const o = {
        forms: {
          permissions: {
            create: true,
            edit: true,
            delete: true,
          },
        },
        assets: {
          permissions: {
            create: true,
            edit: true,
            delete: true,
          },
        },
      }
      
      const arr = ["assets", "media"]
      
      console.log(arr.some((k) => o.hasOwnProperty(k))) // true

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-28
        • 1970-01-01
        • 2018-06-27
        • 2017-12-09
        相关资源
        最近更新 更多