記事のディレクトリ
1.プロジェクトの特定の要件については、以下を参照してください。
https://learn.freecodecamp.one/coding-interview-prep/algorithms/inventory-update/
2.コードの詳細
JS
function updateInventory(arr1, arr2) {
arr2.forEach((newItem,newIndex) => {
arr1.forEach((curItem,curIndex) => {
if (newItem[1] === curItem[1]) {
curItem[0] += newItem[0]
arr2.splice(newIndex, 1)
}
})
})
return arr1.concat(arr2).sort(function(a,b) {
if (a[1] > b[1]) {
return 1;
} else if (a[1] < b[1]) {
return -1;
} else {
return 0
}
})
}
// 两个货物列表示例
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);
//[21, "Bowling Ball"], [2, "Dirty Sock"], [1, "Hair Pin"], [5, "Microphone"]], [[2, "Hair Pin"], [3, "Half-Eaten Apple"], [67, "Bowling Ball"], [7, "Toothpaste"]
三、収穫
- array.forEach()関数を使用すると、多くのコードが凝縮される可能性があります。array.map()関数との違いは、map関数は元の配列を変更しないのに対し、forEach関数は元の配列を置き換えることです。https://www.w3school.com.cn/jsref/jsref_sort.asp
- array.prototype.sort()関数、文字列は複雑さの最初の文字でソートされ、数字は簡潔にすることができます。その中で、sort関数がabを返す場合、それは小さいものから大きいものへのソート、つまりabを意味します。デフォルトのソート方法である-1を返します。逆に、最大から最小にソートします。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
四、感想
この質問をするのは久しぶりで、角に巻き込まれやすいこともありますが、いつも答えることができず、問題を見つけることができないので、長い時間を無駄にしやすいです。 。将来的には、質問をする時間制限を設ける必要があります。本当にできない場合は、他の人が質問でどのように解決するかを確認し、他の人のアイデアを参照して学び、次のことを続ける必要があります。改善します。
※コードにはまだまだ欠点がたくさんありますので、いろいろな意見を出し合い、コミュニケーションを図っていきたいと思います。*