freecodecamp // Inventario de actualización del algoritmo-2


1. Para conocer los requisitos específicos del proyecto, consulte:

https://learn.freecodecamp.one/coding-interview-prep/algorithms/inventory-update/

2. Detalles del código

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

Tres, cosecha

  1. El uso de la función array.forEach () puede condensar una gran cantidad de código. La diferencia con la función array.map () es que la función map no cambiará la matriz original, mientras que la función forEach reemplazará la matriz original; https://www.w3school.com.cn/jsref/jsref_sort.asp
  2. La función array.prototype.sort (), la cadena se ordena por la primera letra de complejidad y los números pueden ser concisos; entre ellos, si la función sort devuelve ab, significa ordenar de pequeño a grande, es decir, ab devuelve -1, que es el método de ordenación predeterminado; viceversa, ordenando de mayor a menor. https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

Cuatro, impresiones

Ha pasado mucho tiempo para hacer esta pregunta y, a veces, es fácil quedar atrapado en los cuernos, pero no puedo hacerlo todo el tiempo y no puedo encontrar el problema, por lo que es fácil perder mucho tiempo. . En el futuro, debe darse un límite de tiempo para hacer las preguntas. Cuando realmente no pueda hacerlo, debe ir a ver cómo otros lo resuelven con preguntas, consultar y aprender de las ideas de los demás, y continuar mejorar.


* Todavía hay muchas deficiencias en el código. Esperamos expresar diferentes opiniones y comunicarnos entre nosotros. *

Supongo que te gusta

Origin blog.csdn.net/weixin_37877794/article/details/108493691
Recomendado
Clasificación