J'ai ce tableau d'objets: Comment puis-je fusionner les objets dans le tableau à un objet de tableau unique? p> Je peux faire ce que je veux utiliser Lodash, mais je ne peux pas penser d'une manière d'itération et de faire cela automatique: p>
3 Réponses :
Je suppose que vous voulez les fusionner à 1 tableau sans regrouper par ID. Si tel est le cas, vous pouvez utiliser p>
concat code> pour les fusionner à 1 tableau, comme:
mergegarray = array1.concat (array2, array3) code>
let array1 = [{
id: 1,
code: 'wawa'
},
{
id: 2,
code: 'qwqw'
}]
let array2 = [{
id: 1,
code: 'ewew'
},
{
id: 3,
code: 'eee'
}]
let array3 = [{
id: 3,
code: 'ww'
},
{
id: 1,
code: 'ww'
},
{
id: 4,
code: 'q'
}
]
var concatArr = array1.concat(array2, array3);
console.log(concatArr);
Je suppose que les dernières valeurs devraient être conservées. Si tel est le cas, vous devez inverser la façon dont vous appuyez sur:
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
S'il s'agit de votre sortie: se réfère ensuite à la code ci-dessous: p> p> let array1 = [{ id: 1, code: 'wawa'}, { id: 2, code: 'qwqw' }]
let array2 = [{ id: 1, code: 'ewew'}, { id: 3, code: 'eee' }]
let array3 = [{ id: 3, code: 'ww' }, { id: 1, code: 'ww' },
{ id: 4, code: 'q' }]
var concated = array1.concat(array2).concat(array3); //Flaten the concatenated array
let output = concated.reduce((acc, cur) => {
let entry = acc.find(item => item.id === cur.id);
if (entry && Array.isArray(entry.code)) { //Check if it has sth in the array
entry.code.push(cur.code);
}
else {
acc.push({id: cur.id, code: [cur.code]}); //For the 1st time, add it to the array
}
//console.log(acc);
return acc;
}, []);
console.log(output);
Quelle est la sortie attendue pour cette entrée? Est-ce un tableau plat avec tous les objets ou vous souhaitez fusionner les objets en fonction de la propriété
ID code>?