मैं लॉश के साथ वस्तुओं के दो सरणियों को समेटने की कोशिश कर रहा हूं। मेरे पास ये दो सरणी हैं और मैं इस तरह से कॉनैट ऑपरेटर का उपयोग करता हूं:

 var array1 = [{ id: 1, name: 'doc1' }, { id: 2, name: 'doc2' }];
 var array2 = [{id:1, name:'doc1'}, {id:3, name:'doc3'}, {id:4, name:'doc4'}];

 var array3 = _.concat(array1, array2);

मैं इस तरह एक सरणी होगा

 [{id:1, name:'doc1'}, {id:2, name:'doc2'}, {id:3, name:'doc3'}, {id:4, name:'doc4'}]]

लेकिन कॉन्सैट फ़ंक्शन के साथ मुझे इस तरह की एक सरणी मिलती है:

  [{ id: 1, name: 'doc1' }, { id: 1, name: 'doc1' }, { id: 2, name: 'doc2' }, { id: 3, name: 'doc3' }, { id: 4, name: 'doc4' }]]

मैं एक ही आईडी के साथ किसी वस्तु की पुनरावृत्ति से बचना चाहता हूँ...मैं किस प्रकार के ऑपरेटर का उपयोग कर सकता हूँ?

2
Andrew88 28 अक्टूबर 2020, 13:47

3 जवाब

सबसे बढ़िया उत्तर

आप merge और keyBy लॉश फ़ंक्शन का उपयोग करके परिणाम प्राप्त कर सकते हैं।

var array1 = [{id:1, name:'doc1'}, {id:2, name:'doc2'}];
var array2 = [{id:1, name:'doc1'}, {id:3, name:'doc3'}, {id:4, name:'doc4'}];

var merged = _.merge(_.keyBy(array1, 'id'), _.keyBy(array2, 'id'));
var values = _.values(merged);
console.log(values);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
4
Derek Wang 28 अक्टूबर 2020, 13:52

इस मामले में _.unionBy() अद्वितीय फ़ील्ड (id का इस्तेमाल करें ) लॉश के संघ के तरीके अद्वितीय मूल्यों की एक सरणी बनाते हैं। _.unionBy() विधि एक पुनरावृत्त को स्वीकार करती है जिसे प्रत्येक सरणी के प्रत्येक तत्व के लिए मानदंड उत्पन्न करने के लिए आमंत्रित किया जाता है जिसके द्वारा विशिष्टता की गणना की जाती है।

const array1 = [{id:1, name:'doc1'}, {id:2, name:'doc2'}];
const array2 = [{id:1, name:'doc1'}, {id:3, name:'doc3'}, {id:4, name:'doc4'}];

const result = _.unionBy(array1, array2, 'id');
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
0
Ori Drori 28 अक्टूबर 2020, 13:54

आपके पास लॉश में uniqWidth है जो आपको ऐसा करने की अनुमति देता है: https://lodash.com/docs#uniqWith

var array1 = [{id:1, name:'doc1'}, {id:2, name:'doc2'}];
var array2 = [{id:1, name:'doc1'}, {id:3, name:'doc3'}, {id:4, name:'doc4'}];

var values = _.uniqWith([...array1, ...array2], _.isEqual);
console.log(values);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
0
Quentin Fonck 28 अक्टूबर 2020, 13:57