从数组中删除元素,当元素相等时

3
例如,我有这个数组。
    var array1 = [{ uid=24433357, first_name="fname", last_name="lname", ...},
{ uid=4821888, first_name="fname", last_name="lname", ...},
{ uid=677614, first_name="fname", last_name="lname", ...},
{ uid=4789723, first_name="fname", last_name="lname", ...},
{ uid=444464, first_name="fname", last_name="lname", ...},
{ uid=767687867, first_name="fname", last_name="lname", ...}]

我希望从数组1中删除uid = x的元素。

我不知道怎么做?

对于普通的数组,我知道这种方法。

array1.splice(index, count)

1
循环遍历数组1中的所有元素。如果数组1[i]的uid = x,则将其添加到数组2中。一旦循环完成,令数组1等于数组2。 - user1017882
你的数组里会有很多语法错误。顺便说一下。 - Andy
2个回答

5

首先修正你的对象,语法都是错的。请看下面的示例,然后使用Array#filter函数通过uid过滤掉不想要的对象。

var array1 = [{ uid:24433357, first_name:"fname", last_name:"lname"},
    { uid:4821888, first_name:"fname", last_name:"lname"},
    { uid:677614, first_name:"fname", last_name:"lname"},
    { uid:4789723, first_name:"fname", last_name:"lname"},
    { uid:444464, first_name:"fname", last_name:"lname"},
    { uid:767687867, first_name:"fname", last_name:"lname"}];

ES5不适用于旧版浏览器

array1 = array1.filter(function(o){
    return o.uid !== 24433357
});

Classic Way(经典方式) 可以兼容老版本浏览器。

for (var i = 0; i < array1.length; i++) {

    if (array1[i].uid === 24433357) {
        array1.splice(i, 1);
    }
}

console.log(array1);

我知道语法不正确,但在这种情况下语法并不重要,最重要的是解决方案))) 谢谢))) - Ruben Yeghikyan

2
for(var i = array1.length-1; i--;){
    if (array1.uid[i] === "x") array1.splice(i, 1);
}

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