[英]compare two arrays and remove not matched objects
我正在努力比較兩個對象數組並從第一個數組中刪除不匹配的對象。
我只需要比較兩個對象數組(array1 和 array2)並從數組 1 中刪除 NOT MATCHED 對象。
這是我到目前為止所做的,但它刪除了所有項目。
for (var i = 0, len = array1.length; i < len; i++) {
for (var j = 0, len2 = array2.length; j < len2; j++) {
if (array1[i].Id != array2[j].Student.Id) {
array1.splice(j, 1);
len= array1;
}
}
}
如果您使用i = 0, len = array1.length; i < len; i++
遍歷array1
i = 0, len = array1.length; i < len; i++
i = 0, len = array1.length; i < len; i++
i = 0, len = array1.length; i < len; i++
,但是在循環中您從array1
刪除了一個條目,您認為下一個循環會發生什么?
您也似乎消除所發現的東西,但你的問題sayd要刪除那些不屬於。 在下面,根據您的評論,我將刪除未找到的內容。
在這種情況下,請使用while
循環。 我還會使用Array#some
(ES5+) 或Array#find
(ES2015+) 而不是進行內部循環:
var i = 0;
var entry1;
while (i < array1.length) {
entry1 = array1[i];
if (array2.some(function(entry2) { return entry1.Id === entry2.Student.Id; })) {
// Found, progress to next
++i;
} else {
// Not found, remove
array1.splice(i, 1);
}
}
或者,如果可以創建一個新數組,請使用filter
:
array1 = array1.filter(function(entry1) {
return array2.some(function(entry2) { return entry1.Id === entry2.Student.Id; }));
});
var array1 = [1,2,3,4,5];
var array2 = [3,4];
var array3 = array1.filter(i => array2.indexOf(i) !== -1);
你可以這樣做:
var array1 = [1,2,3,4];
var array2 = [2,4,6,8];
var array3 = [];
for (var i = 0; i < array1.length; i++) {
for (var j = 0; j < array2.length; j++) {
if (array1[i] === array2[j]) {
array3.push(array1[i]);
}
}
}
console.log(array3);
> [ 2, 4 ]
var Employees= [{name:"Ram",htno:1245},{name:"mohan",htno:1246}, {name:"madhu",htno:1247},{name:"ranga",htno:1248}] var seletedEmployees= [{name:"mohan"},{name:"ranga"}]; var nonmatched = Employees.filter(function(val,index) { return seletedEmployees.map(function(e) { return e.name; }).indexOf(val.name) == -1; }); console.log(nonmatched);
2021年
const a1 = {a:1,b:2,c:3}
const a2 = {a:1,b:2,c:4,d:6}
const r = {}
for(const k2 in a2){
for(const k1 in a1){
if(k1 === k2){
r[k1] = a2[k1]
}
}
}
console.log(r) // {a: 1, b: 2, c: 4}
在我看來,這些 for 循環運行得又快又干凈。 似乎是處理對象數組的最干凈的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.