如何使用过滤值从旧对象创建新对象

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.entriesObject.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,在运行时创建对象

如何过滤今天创建的对象(Django)

JavaScript:如何创建对象并过滤这些属性? [复制]

每当我单击一个开关时,我都需要创建一个新对象,并在关闭时将其删除