【问题标题】:Remove an object from an object array using index? [duplicate]使用索引从对象数组中删除对象? [复制]
【发布时间】:2022-01-19 12:13:00
【问题描述】:

我想从颜色为红色的数组中删除第三个对象。我想使用索引删除它,因为某些对象可能没有 _id 属性,而其他属性在它们之间不是唯一的。

[
  {  color: "BLUE"
     imageURL: "/uploads/image-1639632524718.png"
     inStock: 4
     _id: "61b9bff23b027548ed2f737e"
  },
  {  color: "green"
     imageURL: "/uploads/image-1639561204805.png"
     inStock: 6
     _id: "61ba098f3b027548ed2f737f"
  },
  {  color: "Red"
     imageURL: "/uploads/image-1639647424471.png"
     inStock: 6
  },
  {  color: "Star Light"
     imageURL: "/uploads/image-1639650244179.png"
     inStock: 60
  }
]  

删除对象数组后会是什么样子。

[
  {  color: "BLUE"
     imageURL: "/uploads/image-1639632524718.png"
     inStock: 4
     _id: "61b9bff23b027548ed2f737e"
  },
  {  color: "green"
     imageURL: "/uploads/image-1639561204805.png"
     inStock: 6
     _id: "61ba098f3b027548ed2f737f"
  },
  {  color: "Star Light"
     imageURL: "/uploads/image-1639650244179.png"
     inStock: 60
  }
]  

我该怎么做?

【问题讨论】:

  • “我想从颜色为红色的数组中删除第三个对象” - 如果“第三个”对象不是“红色”怎么办? “我想使用索引删除它,因为某些对象可能没有 _id 属性...” - _id 与此有何相关性? “...其他属性在它们之间不是唯一的。” - 什么?这有什么关系?
  • 我的意思是我想使用索引@Andreas 删除对象
  • 不回答我的任何问题。为什么要索引?为什么不只是 .filter() 的颜色?
  • 因为许多对象可以具有相同的颜色,但我只想删除其中一个,而不是所有对象都具有相同的颜色。 @安德烈亚斯
  • 如果“3rd”对象不是“红色”怎么办?

标签: javascript arrays object


【解决方案1】:

这个splice 函数可以做到这一点

someArray.splice(index, 1)

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

【讨论】:

    【解决方案2】:

    使用Array.splice() 方法从指定位置移除项目。

    const list = [
      {  color: "BLUE",
         imageURL: "/uploads/image-1639632524718.png",
         inStock: 4,
         _id: "61b9bff23b027548ed2f737e"
      },
      {  color: "green",
         imageURL: "/uploads/image-1639561204805.png",
         inStock: 6,
         _id: "61ba098f3b027548ed2f737f"
      },
      {  color: "Red",
         imageURL: "/uploads/image-1639647424471.png",
         inStock: 6
      },
      {  color: "Star Light",
         imageURL: "/uploads/image-1639650244179.png",
         inStock: 60
      }
    ];
    
    const remove = (arr, index) => arr.splice(index, 1);
    remove(list, 2);
    console.log("list after removal: ", list);

    【讨论】:

      【解决方案3】:

      (一旦你修复了你的数据结构 - 它不是一个数组,而且你缺少逗号......)

      您可以filter 找出所有不在该索引处的对象。

      const data=[{color:"BLUE",imageURL:"/uploads/image-1639632524718.png",inStock:4,_id:"61b9bff23b027548ed2f737e"},{color:"green",imageURL:"/uploads/image-1639561204805.png",inStock:6,_id:"61ba098f3b027548ed2f737f"},{color:"Red",imageURL:"/uploads/image-1639647424471.png",inStock:6},{color:"Star Light",imageURL:"/uploads/image-1639650244179.png",inStock:60}];
      
      const out = data.filter((obj, i) => i !== 2);
      
      console.log(out);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        • 1970-01-01
        • 2017-01-28
        • 2012-07-24
        • 2011-03-24
        相关资源
        最近更新 更多