Estaba realizando una evaluación en línea y no puedo entender por qué mi solución original en JS no funcionaba. Mi primera solución está contenida en las dos primeras llamadas a funciones. Pase lo que pase, devolvió un objeto vacío {}. Cuando copié y pegué el cuerpo de la función de findOrderQuantity en allCandyOrders, funcionó bien.
function findOrderQuantity(candyObject) { if (candyObject.inStock < candyObject.weeklyAverage) { return 2 * candyObject.weeklyAverage; } else { return 0; } return 0; } function allCandyOrders(inventory) { // this function fails, and always returns {} let orderSet = {}; let quantity = 0; let name = ''; for (let i = 0; i < inventory.lengh; i++) { // compute how many to order quantity = findOrderQuantity(inventory[i]); // add candy to object // inventory[i].candy is a string containing a candyName name = inventory[i].candy; orderSet[name] = quantity; } return orderSet; }código de trabajo
function allCandyOrders(inventory) { // this function works properly. let orderSet = {}; let value = 0; let candyObject = inventory[0]; for (let i = 0; i < inventory.length; i++) { candyObject = inventory[i]; if (candyObject.inStock < candyObject.weeklyAverage) { value = 2 * candyObject.weeklyAverage; } else { value = 0; } orderSet[inventory[i].candy] = value; } return orderSet; }Originalmente intenté crear dinámicamente el objeto orderSet usando Object.assign, pero tampoco funcionó. El inventario es una matriz que contiene objetos de golosina, que tiene atributos [caramelo (cadena), en stock (int), promedio semanal (int)]. Supongo que es algún tipo de problema de alcance, pero parece que no puedo resolverlo. De lo contrario, me debe faltar algo sobre cómo funciona JS. Gracias de antemano por su ayuda.
Mejor,
Brian