[英]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 库来实现。 我们也应该删除带有值的键。
这很简单,不需要任何嵌套循环。 有两种选择可以做到这一点
includes
function const result = arr.filter((item) => !result.includes(item.id));
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.