如何使用过滤值从旧对象创建新对象
Posted
技术标签:
【中文标题】如何使用过滤值从旧对象创建新对象【英文标题】:How to create new object from old one with filtered values 【发布时间】:2022-01-21 14:31:42 【问题描述】:我有一个对象:
const items =
a: [3,5],
b: [6,7,8],
c: [0,10,1111]
和数组:
const existing = [3,8]
我想创建一个新对象,但没有包含在现有数组中的值。我的意思是这个:
const newItems =
a: [5],
b: [6,7],
c: [0,10,1111]
请给点提示!
【问题讨论】:
【参考方案1】: const items =
a: [3,5],
b: [6,7,8],
c: [0,10,1111]
const existing = [3,8]
const result = Object.keys(items).reduce((acc, key ) =>
acc[key] = items[key].filter((item)=> !existing.includes(item))
return acc;
, )
console.log(result);
【讨论】:
【参考方案2】:您可以使用Object.entries
和Object.fromEntries
以及filter
来获得所需的结果。
const items =
a: [3, 5],
b: [6, 7, 8],
c: [0, 10, 1111],
const existing = [3, 8]
const newEntries = Object.entries(items).map(([key, value]) => [
key,
value.filter((x) => !existing.includes(x))
])
const newObject = Object.fromEntries(newEntries)
【讨论】:
以上是关于如何使用过滤值从旧对象创建新对象的主要内容,如果未能解决你的问题,请参考以下文章
Django-Filter 包:如何过滤对象以创建统计信息而不是列表
如何在 R 中迭代地过滤列表中的列表或如何同时使用两个条件过滤 data.table,在运行时创建对象