renovations
This commit is contained in:
parent
c7d4c7e3ff
commit
e1948130f6
170 changed files with 1496 additions and 1161 deletions
|
@ -0,0 +1,31 @@
|
|||
# Первый вариант
|
||||
|
||||
```js
|
||||
//+ run
|
||||
function sumArgs() {
|
||||
// скопируем reduce из массива
|
||||
arguments.reduce = [].reduce;
|
||||
return arguments.reduce(function(a, b) {
|
||||
return a + b;
|
||||
});
|
||||
}
|
||||
|
||||
alert( sumArgs(4,5,6) ); // 15
|
||||
```
|
||||
|
||||
# Второй вариант
|
||||
|
||||
Метод `call` здесь вполне подойдёт, так как требуется вызвать `reduce` в контексте `arguments` с одним аргументом.
|
||||
|
||||
```js
|
||||
//+ run
|
||||
function sumArgs() {
|
||||
// запустим reduce из массива напрямую
|
||||
return [].reduce.call(arguments, function(a, b) {
|
||||
return a + b;
|
||||
});
|
||||
}
|
||||
|
||||
alert( sumArgs(4,5,6) ); // 15
|
||||
```
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# Перепишите суммирование аргументов
|
||||
|
||||
[importance 5]
|
||||
|
||||
Есть функция `sum`, которая суммирует все элементы массива:
|
||||
|
||||
```js
|
||||
//+ run
|
||||
function sum(arr) {
|
||||
return arr.reduce(function(a, b) { return a + b; });
|
||||
}
|
||||
|
||||
alert( sum([1,2,3]) ); // 6 (=1+2+3)
|
||||
```
|
||||
|
||||
Создайте аналогичную функцию `sumArgs()`, которая будет суммировать все свои аргументы:
|
||||
|
||||
```js
|
||||
function sumArgs() {
|
||||
/* ваш код */
|
||||
}
|
||||
|
||||
alert( sumArgs(1,2,3) ); // 6, аргументы переданы через запятую, без массива
|
||||
```
|
||||
|
||||
Для решения примените метод `reduce` к `arguments`, используя `call`, `apply` или одалживание метода.
|
||||
|
||||
P.S. Функция `sum` вам не понадобится, она приведена в качестве примера использования `reduce` для похожей задачи.
|
Loading…
Add table
Add a link
Reference in a new issue