【问题标题】: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]
}

请给点提示!

【问题讨论】:

    标签: javascript arrays object


    【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-30
        • 2015-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多