如何使用JavaScript从数组中删除一个对象?

111

我有一个像这样的 JavaScript 对象:

id="1";
name = "serdar";

我有一个包含许多上述对象的数组。我该如何从该数组中删除一个对象,例如:

obj[1].remove();
15个回答

0

1
关于“delete将取消定义偏移量但不完全删除”的说法——这并不完全正确,因为如我在答案中所示,在if (3 in trees)测试中,delete将完全删除该元素。唯一的问题是它不会移动其他元素以填补空洞,因此长度不受影响。因此,如果您显示数组,您将在存在空洞的地方得到undefined - Daniel Vassallo
然而,使用delete并不等同于将元素设置为undefined。这也在这里解释了:https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/delete_Operator#Deleting_array_elements - Daniel Vassallo
@daniel:我表达不正确,但我的意思是一样的。 :-) - Stefan Hoth

0
delete obj[1];

请注意,这不会更改数组索引。您删除的任何数组成员将保留为包含“undefined”的“插槽”。

0

使用splice方法。

(至少我认为这是答案,你说你有一个对象,但是你给出的代码只创建了两个变量,并且没有显示如何创建数组)


0
var apps = [{id:34,name:'我的应用',another:'东西'},{id:37,name:'我的新应用',another:'事物'}];
// 获取id为37的对象的索引 var removeIndex = apps.map(function(item) { return item.id; }).indexOf(37);
// 删除对象 apps.splice(removeIndex, 1);

-1
如果它是数组中的最后一个项,你可以使用obj.pop()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接