如何删除列表中的对象?Javascript节点和下划线

如何删除列表中的对象?Javascript节点和下划线,javascript,node.js,underscore.js,Javascript,Node.js,Underscore.js,您好,我是Javascript和NodeJS新手,但我需要删除列表中带有布尔值的数组中的对象。列表中有3个朋友,2个朋友isEvil=true所以我需要删除2个朋友,输出必须是1。 这就是我试过的 MyTry 1: _.each(user.friends, function(friend) { if(friend.isEvil){ delete friend; } }); console.log(user.friends.length); //output is

您好,我是Javascript和NodeJS新手,但我需要删除列表中带有布尔值的数组中的对象。列表中有3个朋友,2个朋友
isEvil=true所以我需要删除2个朋友,输出必须是1。
这就是我试过的

MyTry 1:

_.each(user.friends, function(friend) {
    if(friend.isEvil){
        delete friend;
    }
});
console.log(user.friends.length); //output is 3
如果我这样做,它将删除所有属性,但仍然有一个空对象:MyTry 2:

_.each(user.friends, function(friend) {
    if(friend.isEvil){
        delete f.property1;
        delete f.property2;
    }
});
console.log(user.friends.length); //output is 3
我最后试过的是:

_.each(user.friends, function(friend, key) {
    if(friend.isEvil){
        delete user.friends[key];
    }
});
console.log(user.friends.length); //output is 3

只需使用
下划线提供的
过滤器(list,predicate,[context])
函数即可:

_.filter(user.friends, function(friend){ 
                             return !friend.isEvil; 
  });

有关详细信息:

筛选用户喜欢的好友

user.friends.filter(function (friend) {
    return !friend.isEvil;
});
var frieds=[{name:1,isEvil:false},{name:2,isEvil:true},{name:3,isEvil:true}];
var notEvil=friends.filter(函数(friends)){
回来!朋友,伊塞维尔;
});

控制台日志(notEvil)试试这个,基本上你在数组中迭代并拼接所有不需要的对象:

for(var i in user.friends){
    if(user.friends[i].isEvil){

         user.splice(i,1)
    } 
}

Delete操作符在移除元素的位置留下未定义的数组(请参阅)。我相信你们应该用这个方法来移除元素。 或者,您可以只使用内置下划线方法来过滤数组(例如),例如:


要摆脱邪恶的朋友,可以使用下划线的函数:

var niceFriends = _.reject(friends, 'isEvil');
var-friends=[
{id:'mickey',isEvil:false},
{id:'donald',isEvil:true},
{id:'minnie',isEvil:false}
];
var niceFriends=\拒绝(friends,'isEvil');
document.getElementById('result').textContent=JSON.stringify(niceFriends)



他们不需要邪恶的朋友,所以请更正您的条件以返回!伊塞维尔朋友
var niceFriends = _.reject(friends, 'isEvil');