使用索引从对象数组中删除对象? [复制]
Posted
技术标签:
【中文标题】使用索引从对象数组中删除对象? [复制]【英文标题】: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”对象不是“红色”怎么办?
【参考方案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);
【讨论】:
以上是关于使用索引从对象数组中删除对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章