如果在另一个数组中找到对象,如何从一个数组中删除该对象

时间:2016-09-15 12:40:11

标签: javascript arrays object

我试图让这个想法变得简单,但现在我意识到我的可能有点复杂了。

这个for循环运行:

for (var j = 0; j < _USERS.length; j++){
      console.log(_USERS[j].useruid);
    }

给了我:

BLRlXKIeWkanHiSCXbBCFRTIaqk1
CMMpvodHJAYdR4RvI5RxZtJ8llW2
sF4gWbZvAMPmrbeHsKzln7LowOx2
xcBZNxuAahWY6kXe7S3ZJgpDbPm1

这个for循环运行:

for (var i = 0; i < promises.length; i++){
      console.log(promises[i][0].likedUseruid);
    }

给了我:

xcBZNxuAahWY6kXe7S3ZJgpDbPm1

然后如何从第一个数组中删除^^^^,使其显示为:

BLRlXKIeWkanHiSCXbBCFRTIaqk1
CMMpvodHJAYdR4RvI5RxZtJ8llW2
sF4gWbZvAMPmrbeHsKzln7LowOx2

没有结尾Pm1

这些都是对象而不是元素

4 个答案:

答案 0 :(得分:1)

尝试以下内容:

&#13;
&#13;
var myArray = [{name:"Rich", gender:"male"},
         {name:"Hannah", gender:"female"}];

var mySecondArray = [{name:"Rich", gender:"male"},
             {name:"Lauren", gender:"female"}];

var mySecondArrayNames = mySecondArray.map(x => x.name);

console.log(myArray.filter(x => mySecondArrayNames.indexOf(x.name) === -1));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

使用lodash差异

_.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');

https://lodash.com/docs/4.15.0#difference

答案 2 :(得分:0)

首先,由于你不能直接比较js中的文字对象,你需要一个比较对象键值的函数(我建议lodash isEqual),

然后你可以使用array.some进行过滤并比较对象:

myArray = [{name:"Rich", gender:"male"},
             {name:"Hannah", gender:"female"}];

mySecondArray = [{name:"Rich", gender:"male"},
                 {name:"Lauren", gender:"female"}];

var res = myArray.filter(function(x){
  return ! mySecondArray.some(function(z){
    return _.isEqual(z,x)
  })
})

console.log(res)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

答案 3 :(得分:0)

这是最简洁的解决方案。使用lodash,您可以执行以下操作:

var myArray = [{name:"Rich", gender:"male"},
             {name:"Hannah", gender:"female"}];

var mySecondArray = [{name:"Rich", gender:"male"},
                 {name:"Lauren", gender:"female"}];

var result = _.differenceWith(myArray, mySecondArray, _.isEqual);

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

differenceWith函数返回第一个数组中未包含在第二个数组中的所有元素。第三个参数是一个函数,用于定义一个元素何时等于另一个元素。你可以为此提供自己的函数,但是lodash已经内置了isEqual函数,它比较了两个对象的所有字段名和值。

如前所述。 lodash在数组和对象上执行这些任务有很多很好的资源。你一定要看看文档。 lodash documentation