我心里一片空白。我所拥有的是2个阵列:
我想要做的是返回数组1和2之间的差异。
以下是该应用所有用户的列表:
[{0:
{id: 1234, email: test@test.com}
},{1:
{id: 1235, email: michael@test.com}
}]
然后数组2看起来像:
[{0:
{id: 1234, email: test@test.com}
}]
所以我想要一个会返回的数组(数组1和2之间的差异):
[{0:
{id: 1235, email: michael@test.com}
}]
以下是我生成数组1的方法:
this.allUsersList = [];
this.sharingProvider.getUsersListRef().on('child_added', userSn => {
if(userSn.key) {
this.allUsersList.push({
id: userSn.key,
email: userSn.val().email
});
}
});
以下是我如何生成数组2:
this.sharingList = [];
this.sharingProvider.getFormsUsersRef(this.formId).on('child_added', fuSnap => {
this.sharingProvider.getUsersListRef().child(fuSnap.key).on('value', userSn => {
const myUserId = this.sharingProvider.getMyUserId();
if(userSn.key !== myUserId) {
this.sharingList.push({
id: userSn.key,
email: userSn.val().email
});
}
});
});
任何帮助表示赞赏
答案 0 :(得分:2)
您可以使用some and Foreach ...
let array1 = [
{0:
{id: 1234, email: 'test@test.com'}
},
{1:
{id: 1235, email: 'michael@test.com'}
}
]
let array2 = [
{0:
{id: 1234, email: 'test@test.com'}
}
],array3 = [];
array1.forEach(function(e){
let conditional = array2.some(function(element,i){
return e[i] && element[i].id === e[i].id && element[i].email === e[i].email
});
if(!conditional) array3.push(e);
});
console.log(array3);