function storage(data) {
let object = {};
data.forEach(line => {
let [product, quantity] = line.split(' ');
if (!object[product]) {
object[product] = quantity;
} else {
let currentQuantity = Object.assign(object[product] = quantity); < -- - problem comes from here
let newQuantity = Number(currentQuantity) Number(quantity);
Object.assign(product, newQuantity);
}
});
}
storage(['tomatoes 10', 'coffee 5', 'olives 100', 'coffee 40']);
您好,我是 OOP 的新手,我想組合來自同名鍵的不同值。
想要的輸出['tomatoes 10', 'coffee 45', 'olives 100']
uj5u.com熱心網友回復:
你不應該使用Object.assign(). 這是用于合并物件,而不是分配特定屬性。只需檢索和分配 object[product].
最后,您需要轉換object回字串陣列并回傳它。
function storage(data) {
let object = {};
data.forEach(line => {
let [product, quantity] = line.split(' ');
quantity = Number(quantity);
if (!object[product]) {
object[product] = quantity;
} else {
object[product] = quantity;
}
});
return Object.entries(object).map(([key, value]) => `${key} ${value}`);
}
console.log(storage(['tomatoes 10', 'coffee 5', 'olives 100', 'coffee 40']));
uj5u.com熱心網友回復:
你可以簡化很多。使用Object.assign. 您可能還希望將數量顯式轉換為數字,而不是使用字串。
let displayStock = (data) => Object.entries(data).map( ([k, v]) => `${k} ${v}` )
function storage(data) {
let object = {};
data.forEach(line => {
let [product, quantity] = line.split(' ');
object[product] = (object[product] || 0) Number(quantity)
});
return object;
}
let stock = storage(['tomatoes 10', 'coffee 5', 'olives 100', 'coffee 40']);
console.log(displayStock(stock))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/528700.html
上一篇:如何在回圈中命令Ajax呼叫
