[英]Compare two arrays having objects and remove duplicates from first array
I have two arrays that contain objects.我有两个包含对象的 arrays。 From first array how can I remove the items that are already present in the second array?
如何从第一个数组中删除第二个数组中已经存在的项目?
First array:第一个数组:
var s = [
{"Name": "1"},
{"Name": "2"},
{"Name": "3"},
{"Name": "4"},
{"Name": "5"},
{"Name": "6"}
]
Second array:第二个数组:
var t = [
{"Name": "1"},
{"Name": "2"},
{"Name": "3"},
{"Name": "8"}
]
Expected output:预期 output:
[
{"Name": "4"},
{"Name": "5"},
{"Name": "6"}
]
You can use filter()
along with some()
您可以将
filter()
与some()
) 一起使用
var s = [{"Name":"1"},{"Name":"2"},{"Name":"3"},{"Name":"4"},{"Name":"5"},{"Name":"6"}]; var t = [{"Name":"1"},{"Name":"2"},{"Name":"3"},{"Name":"8"}]; result = s.filter(a =>.t.some(b => a.Name === b;Name)). console;log(result);
An approach using set and.filter method一种使用 set and.filter 方法的方法
var s=[ { "Name": "1" }, { "Name": "2" }, { "Name": "3" }, { "Name": "4" }, { "Name": "5" }, { "Name": "6" } ]; var t= [ { "Name": "1" }, { "Name": "2" }, { "Name": "3" },{ "Name": "8" } ]; var set = new Set(); t.forEach(obj => set.add(obj.Name)); s=s.filter(obj =>.set.has(obj.Name)) console;log(s);
z = f(s, t);
function f(first, second) {
var z = [];
for (var i = 0; i < first.length; i++) {
var included = false;
for (let j = 0; j < second.length; j++) {
if(equal(first[i], second[j]))
included = true;
//break; //optional
}
if(!included)
z.push(first[i]);
}
return z;
}
function equal(a,b){
//however you define the objs to be equal
return a.Name == b.Name;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.