Из документации Array.reduce () :
Функция редуктора принимает четыре аргумента:
- Аккумулятор (акк)
- Current Value (cur)
- Current Index (idx)
- Source Array (src)
Возвращаемое значение функции редуктора присваивается аккумулятору, чье значение запоминается на каждой итерации по всему массиву и в конечном итоге становится окончательным единственным полученным значением.
blockquote>Итак, я думаю, что вы хотели сделать это вместо этого:
var arr = [ { name: "A", quantity: 1, price: 20 }, { name: "B", quantity: 2, price: 40 }, { name: "C", quantity: 3, price: 60 }, { name: "D", quantity: 4, price: 80 } ]; var test = arr.reduce(function(acc, curr) { return acc + (curr.quantity * curr.price); }, 0); console.log(test);
.as-console {background-color:black !important; color:lime;} .as-console-wrapper {max-height:100% !important; top:0;}
Примечание, всегда полезно явно определить начальное значение аккумулятора (в данном случае
0
). Даже если это необязательно, в этом случае работать не будет:initialValue Необязательно: значение, используемое в качестве первого аргумента для первого вызова обратного вызова. Если начальное значение не указано, будет использован первый элемент в массиве. Вызов метода Reduce () для пустого массива без начального значения является ошибкой.
blockquote>Почему вы получаете NaN?
Поскольку вы явно не определяете начальное значение аккумулятора, это будет первый объект в массиве: [1129 ]
{name: "A", quantity: 1, price: 20}
Теперь первая итерация
reduce()
будет работать, потому что аккумулятор (в вашем примере он называетсяitem1
) является объектом и имеет свойстваquantity
иprice
. Более того, эта итерация вернет1 * 20 + 2 * 40 = 100
, и это будет новое значение аккумулятора (item1
). Теперь вторая и последующие итерацииreduce()
не будут работать так, как вы ожидаете, потому что новое значение аккумулятора (после первой итерации) не является объектом и не будет иметь свойствquantity
иprice
. Итак, эта последняя проблема приведет к получениюNaN
в качестве окончательного значения.
SQL Server Agent может сделать это для Вас.
Просто создайте задание с регулярным графиком и SQL, который Вы хотите выполнить. Существует простой в использовании интерфейс мастера для создания рабочих мест.