renovations

This commit is contained in:
Ilya Kantor 2015-01-14 10:23:45 +03:00
parent c7d4c7e3ff
commit e1948130f6
170 changed files with 1496 additions and 1161 deletions

View file

@ -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
```

View file

@ -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` для похожей задачи.