Я пытаюсь создать словарь с 3 различными массивами

myItems = ["Salt", "Pepper", "Oil", "Salt", "Pepper", "Oil", "Onion"] myQuantities = [1, 1, 1, 2, 2, 2, 2] myUnits = ["gms", "gms", "kgs", "gms", "pound", "kgs", "pound"] 

Также из приведенного выше примера я хочу удалить дубликат «Предметов», если «Единицы» одинаковы; т.е. соль, повторяющаяся дважды (1 г и 2 г), должна быть {соль: ‘3 г’}

Если единицы измерения разные, то его следует повторить дважды, т. Е. Pepper повторяется дважды с разными единицами (1 г и 2 фунта), это должно быть {Pepper: «1 г», Pepper: «2 фунта»}

Пример кода

 myItems = ["Salt", "Pepper", "Oil", "Salt", "Pepper", "Oil", "Onion"] myQuantities = [1, 1, 1, 2, 2, 2, 2] myUnits = ["gms", "gms", "kgs", "gms", "pound", "kgs", "pound"] console.log(myItems); console.log(myQuantities); console.log(myUnits); let final = Object.fromEntries( myItems.map((_, i) ={amp}gt; [myItems[i], myQuantities[i].toString() " " myUnits[i]]) ); console.log(final) 
 Current Result = { Salt: '2 gms', Pepper: '2 pound', Oil: '2 kgs', Tes: '2 pound' } Expected Result = { Salt: '3 gms', Pepper: '1 gms', Pepper: '2 pound', Oil: '3 kgs', Tes: '2 Onion' } 

Вы не можете иметь дубликаты ключей в объекте. Поместите значения в массив.

 const myItems = ["Salt", "Pepper", "Oil", "Salt", "Pepper", "Oil", "Onion"] const myQuantities = [1, 1, 1, 2, 2, 2, 2] const myUnits = ["gms", "gms", "kgs", "gms", "pound", "kgs", "pound"] let final = {} myItems.forEach((item, i) ={amp}gt; { if (!final[item]) { final[item] = []; } final[item].push(myQuantities[i]   " "   myUnits[i]); }); console.log(final) 

Я достиг чего-то похожего, но без дубликатов ключей (с которыми вы можете справиться самостоятельно)

 let myItems = ["Salt", "Pepper", "Oil", "Salt", "Pepper", "Oil", "Onion"] let myQuantities = [1, 1, 1, 2, 2, 2, 2] let myUnits = ["gms", "gms", "kgs", "gms", "pound", "kgs", "pound"] let x = myItems.reduce((newObj, entry, idx) ={amp}gt;{ if(!newObj[entry]){ newObj[entry] = [myQuantities[idx], myUnits[idx]]; } else { if(newObj[entry][1] == myUnits[idx]){ newObj[entry] = [(newObj[entry][0]   myQuantities[idx]), myUnits[idx]]; } else { // should convert unit here or handle the case properly } } return newObj; }, {}); Object.keys(x).forEach(ele ={amp}gt; x[ele] = x[ele][0]   ' '   x[ele][1]); console.log(x); //result: {Salt: "3 gms", Pepper: "1 gms", Oil: "3 kgs", Onion: "2 pound"}