Js — суммировать каждый аргумент функции в строку без for, while

Добрый день. Недавно на собеседовании был такой вопрос "Напишите функцию которая суммирует свои аргументы и возвращает сумму строкой, аргументов может быть сколько угодно. Что сделал я:

function test(a, b, c) {
   var args = Array.slice(arguments);
   args.forEach(function...)
   test(1, 2, 3);
}


В общем реализация понятна, получаем нормальный массив дальше уже внутри forEach выполняем всю работу. Мне сказали а без forEach, for, while можете? А как без итераторов? Я спорил и говорил, что так нельзя, но мне ответили, что можно :)
  • Вопрос задан
  • 4769 просмотров
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
function sum() {
    var args = [].slice.call(arguments);
    if (args.length === 0) return 0;
    if (args.length === 1) return args[0];
    return args.shift() + sum.apply(sum, args);
}
// sum(4, 8, 7, 9, 2) -> 30
Ответ написан
cha-cha
@cha-cha
array.reduce
Код думаю сами напишете.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
"как можно по другому", ну кто такое спрашивает, это же javascript - здесь есть миллионы разных способов. Лучше бы спрашивали "как надо". Вот так точно не надо:
function sum() { return eval([].join.call(arguments, '+')).toString() }
Ответ написан
Комментировать
@larionov_n Автор вопроса
Если конечно аргументов конечное множество, то можно забыдлокодить:
function test(a, b, c) {
   var args = Array.slice(arguments);
   console.log(
      parseFloat(args.join('')[0]) + 
      parseFloat(args.join('')[1]) + 
      parseFloat(args.join('')[2])
   );
}
test(1, 2, 3);
// 6
Ответ написан
Комментировать
@Shavadre
А рекурсией пользоваться можно?)
Ответ написан
@larionov_n Автор вопроса
Спасибо cha-cha.

Код:

function test() {
   var args = Array.slice(arguments);
   return args.reduce(function(a, b){
      return a + b;
   }).toString();
}
console.log(test(1, 2, 3, 5, 6));
// 17
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы