2017-03-07 75 views
0

使用lodash查找差之間發現差異:Lodash JSON陣列

c1Arr是:

[ { varName: 'city', varValue: 'cccccccc' }, 
    { varName: 'country', varValue: 'dddddddd' } 
] 

c2Arr是:

[ { varName: 'abc', varValue: 'aaa' }, 
    { varName: 'city', varValue: 'cccccccc' }, 
    { varName: 'country', varValue: 'dddddddd' } 
] 

執行以下代碼

var dArr = _.difference(c2Arr, c1Arr); 
    console.log(dArr); 

爲什麼我不能得到結果:

[ { varName: 'abc', varValue: 'aaa' }] 

而是我得到(即, c2Arr)

[ { varName: 'abc', varValue: 'aaa' }, 
    { varName: 'city', varValue: 'cccccccc' }, 
    { varName: 'country', varValue: 'dddddddd' } 
] 

回答

1

你必須提供comparator功能,因爲元素對象。

試試這個,

_.differenceWith(c2Arr, c1Arr, _.isEqual); 

var c1Arr = [{ 
 
    varName: 'city', 
 
    varValue: 'cccccccc' 
 
}, { 
 
    varName: 'country', 
 
    varValue: 'dddddddd' 
 
}] 
 

 
var c2Arr = [{ 
 
    varName: 'abc', 
 
    varValue: 'aaa' 
 
}, { 
 
    varName: 'city', 
 
    varValue: 'cccccccc' 
 
}, { 
 
    varName: 'country', 
 
    varValue: 'dddddddd' 
 
}] 
 

 
var dArr = _.differenceWith(c2Arr, c1Arr, _.isEqual); 
 
console.log(dArr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

+0

試過,但還是同樣的結果。 :-( – win

+0

@Divya對我來說,它的工作,請參閱代碼 – RaR

+0

謝謝,現在這個作品。將修復我的主要程序。:-) – win