【问题标题】:Remove a specific object from an object array, filtering by a key and value pair从对象数组中删除特定对象,通过键值对过滤
【发布时间】:2021-01-21 18:29:22
【问题描述】:

有没有什么快速的方法可以从对象数组中删除特定对象,通过键值对过滤,而不指定索引号?

例如,如果有这样的对象数组:

const arr = [
  { id: 1, name: 'apple' },
  { id: 2, name: 'banana' },
  { id: 3, name: 'cherry' },
  ...,
  { id: 30, name: 'grape' },
  ...,
  { id: 50, name: 'pineapple' }
]

如何只删除具有id: 30 的水果而不使用其索引号?

我已经想出了类似下面代码的一种方式,但它看起来像一个迂回的方式:

for ( let i = 0; i < arr.length; i++) {
  if ( arr[i].id === 30 ) {
    arr.splice(i, 1);
  }
}

【问题讨论】:

    标签: javascript arrays for-loop key-value keyvaluepair


    【解决方案1】:

    在es6标准下,可以使用filter方法

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

    const arr = [
          { id: 1, name: 'apple' },
          { id: 2, name: 'banana' },
          { id: 3, name: 'cherry' },
          { id: 30, name: 'grape' },
          { id: 50, name: 'pineapple' }
        ];    
        // !== for strict checking
        console.log(arr.filter(e => e.id !== 30))

    【讨论】:

      猜你喜欢
      • 2020-08-28
      • 2022-07-02
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 2013-05-05
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多