freecodecamp // Algorithm-2更新インベントリ


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"]

三、収穫

  1. array.forEach()関数を使用すると、多くのコードが凝縮される可能性があります。array.map()関数との違いは、map関数は元の配列を変更しないのに対し、forEach関数は元の配列を置き換えることです。https://www.w3school.com.cn/jsref/jsref_sort.asp
  2. array.prototype.sort()関数、文字列は複雑さの最初の文字でソートされ、数字は簡潔にすることができます。その中で、sort関数がabを返す場合、それは小さいものから大きいものへのソート、つまりabを意味します。デフォルトのソート方法である-1を返します。逆に、最大から最小にソートします。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

四、感想

この質問をするのは久しぶりで、角に巻き込まれやすいこともありますが、いつも答えることができず、問題を見つけることができないので、長い時間を無駄にしやすいです。 。将来的には、質問をする時間制限を設ける必要があります。本当にできない場合は、他の人が質問でどのように解決するかを確認し、他の人のアイデアを参照して学び、次のことを続ける必要があります。改善します。


※コードにはまだまだ欠点がたくさんありますので、いろいろな意見を出し合い、コミュニケーションを図っていきたいと思います。*

おすすめ

転載: blog.csdn.net/weixin_37877794/article/details/108493691