簡體   English   中英

Javascript-在不使用Array.prototype.filter的情況下基於鍵值獲取兩個對象數組之間的差異

[英]Javascript - getting difference between two arrays of objects based on key value without using Array.prototype.filter

這個小提琴展示了如何根據我的案例id中的鍵9的值來獲取不在數組中的元素。

http://jsfiddle.net/wgmz40ow/

此解決方案來自此處: JavaScript中兩個對象數組之間的區別

在找到該解決方案之前,我嘗試使用簡單的for循環以一個數組組成,該數組僅由a的對象組成,而不包含b的對象。

有人可以在不使用javascripts Array.prototype.filter函數的情況下提供解決方案嗎?

編輯:在我來說,我特別想處理數組的情況下, b始終是一個數組的一個子集a

我在嵌套循環方面遇到了麻煩,但是一旦我將內部循環分解為一個函數,我就能很快地抓住解決方案:

http://jsfiddle.net/xzy9Lyr0/

不幸的是,我明白為什么其他的解決辦法最好-雷將不會返回一個真正的區別,只是在元素a而不是在b ,除非我Concat的兩個返回的數組( http://jsfiddle.net/xzy9Lyr0/2/ )。

這是一個可能包含惡作劇痕跡的答案。

為了擴展@Jon通過學習來理解的呼吁,這里有一個簡單而復雜的解決方案:

var bstr = JSON.stringify(b);
for (var i = a.length - 1; i >= 0; i--) {
    if (!~bstr.indexOf(JSON.stringify(a[i]))) {
        c.push(a[i]);
    }
}

請享用!

編輯:修復錯字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM