function updateInventory(arr1, arr2) {
var current = {};
for (var i = 0; i < arr1.length; i++) {
current[arr1[i][1]] = arr1[i][0];
}
for (i = 0; i < arr2.length; i++){
if (current.hasOwnProperty(arr2[i][1])) {
current[arr2[i][1]] = current[arr2[i][1]] + arr2[i][0];
} else {
current[arr2[i][1]] = arr2[i][0];
}
}
return Object.keys(current).map(function(val) {
return [current[val],val];
});
}
updateInventory([[21, "Bowling Ball"], [2, "Dirty Sock"], [1, "Hair Pin"], [5, "Microphone"]], [[2, "Hair Pin"], [3, "Half-Eaten Apple"], [67, "Bowling Ball"], [7, "Toothpaste"]]);
好的,结果是例如[[21, "Bowling Ball"],[2, "Dirty Sock"],[1, "Hair Pin"],[5, "Microphone"]]
,它需要像在函数调用中一样(逗号后面有空格)。换句话说,我无法弄清楚如何解决这条问题:
return Object.keys(current).map(function(val) {
return [current[val],val];
});
答案 0 :(得分:1)
下次更好地指出挑战https://www.freecodecamp.com/challenges/inventory-update
PS:你不敢告诉我它没有打印出你所期望的东西,因为挑战说它通过了,自己检查
function updateInventory(arr1, arr2) {
var inv = {};
for (var i in arr1) {
inv[arr1[i][1]] = inv[arr1[i][1]] || 0;
inv[arr1[i][1]] += arr1[i][0];
}
for (var i in arr2) {
inv[arr2[i][1]] = inv[arr2[i][1]] || 0;
inv[arr2[i][1]] += arr2[i][0];
}
var arr3 = [];
Object.keys(inv).sort().forEach(function(key) {
arr3.push([inv[key], key]);
});
console.log(arr3);
return arr3;
}
// Example inventory lists
var curInv = [
[21, "Bowling Ball"],
[2, "Dirty Sock"],
[1, "Hair Pin"],
[5, "Microphone"]
];
var newInv = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
updateInventory(curInv, newInv);
&#13;