繁体   English   中英

如何检查对象数组是否包含字符串数组中的键 js?

[英]how can i check if an array of objects contains a key which is in array of strings js?

我们有一个对象数组,例如

const arr = [{id: "someId", name: {...}}, ...];
const skippedKeys = ["id"...]

如何根据跳过的键过滤 object 的数组? 结果应该是:

const result = [{name: {...}}, ...];

我也不想在循环中创建一个循环。 结果也可以使用 lodash 库来实现。 我们也应该删除带有值的键。

这很简单,不需要任何嵌套循环。 有两种选择可以做到这一点

  1. 使用includes function
    const result = arr.filter((item) => !result.includes(item.id));
  1. 使用set
    const dataSet = new Set(skippedKeys);
    const result = arr.filter((item) => !dataSet.has(item.id));

我更喜欢第二个,因为它不包括双重检查。 希望答案是有帮助的。

const result = arr.map(obj =>
  Object.keys(obj).reduce(
    (res, key) => (
      skippedKeys.includes(key) ? res : {...res, [key]: obj[key]}
    ),
    {},
));

既然你说它可以使用 lodash 来实现......这里的代码使用 lodash

 let result = _.map(arr, (el)=> _.omit(el, skippedKeys))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM