我试图让这个想法变得简单,但现在我意识到我的可能有点复杂了。
这个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
?
这些都是对象而不是元素
答案 0 :(得分:1)
尝试以下内容:
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;
答案 1 :(得分:0)
使用lodash差异
_.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
答案 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