Ошибка
Я работал над упражнением, которое должно суммировать сумму изменений, оставленную в кассовом аппарате, переменную cid
.Как я могу использовать метод уменьшения Javascript для массивов массивов?
cid
выглядит примерно так:
var cid = [["PENNY", 0], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]];
В таком случае, как это, когда все значений являются 0, то я должен сообщить, что регистр пуст.
Я думал, что-то, как это должно работать:
if (cid.reduce(function(prevVal, curVal) {
return prevVal[1] + curVal[1];
}) === 0)
Но это не так.
Рытье В
Некоторые странные вещи, кажется, случаются при работе с массивами в рамках массивов и метод reduce
. Например:
cid.reduce(function(prevVal, curVal) {
return prevVal[1] + curVal[1];
});
NaN
В то время как, если я просто пусть весь массив через, я получаю что-то, хоть что-то странное:
cid.reduce(function(prevVal, curVal) {
return prevVal + curVal;
});
"PENNY,0NICKEL,0DIME,0QUARTER,0ONE,0FIVE,0TEN,0TWENTY,0ONE HUNDRED,0"
Это для меня ясно, что при использовании reduce
, это - это не просто углубление на один уровень глубже в массив/объект, как я и предполагал.
Тем не менее, единственное, что я мог заподозрить, также ошибочно: он не вникает во все уровни. Если бы это было так, я бы ожидал, что видел что-то вроде этого (уведомления нет никаких запятых):
"PENNY0NICKEL0DIME0QUARTER0ONE0FIVE0TEN0TWENTY0ONE HUNDRED0"
Два вопроса
- Есть ли способ, чтобы эффективно использовать
reduce
метод с многомерными массивами вроде этого? - Может ли кто-нибудь помочь мне понять, что происходит под капотом здесь?
'array + array === array.toString() + array.toString()' – elclanrs
Два ответа ниже пригвоздили его - просто хотели указать, что вы действительно возвращаете количество монет/нот, которые у вас есть, а не их ценность. – James
Предполагается, что это «[[[« PENNY », 0],« NICKEL », 0], [« DIME », 0], [« QUARTER », 0], [« ONE », 0], [ «FIVE», 0], [«TEN», 0], [«TWENTY», 0], [«ONE HUNDRED», 0]] 'или' [["PENNY", 0], ["NICKEL", 0 ], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0] ["ONE HUNDRED", 0]] ' – jdphenix