aryeh
@aryeh
Молод (душой) и приятен в общении :-)

Как правильно написать функцию с произвольным числом аргументов?

Есть функция принимающая до 5 аргументов и использующая последний аргумент как значение, а все первые как индексы в массиве.
function setParam() {
    switch(arguments.length) {
    case 2:
      myStorage[arguments[0]]=arguments[1];
      break;
    case 3:
      myStorage[arguments[0]][arguments[1]]=arguments[2];
      break;
    case 4:
      myStorage[arguments[0]][arguments[1]][arguments[2]]=arguments[3];
      break;
    case 5:
      myStorage[arguments[0]][arguments[1]][arguments[2]][arguments[3]]=arguments[4];
      break;
    default:
      throw new Error('Error!');
    }
  };

Как правильно и красиво переписать её для любого количества аргументов?
  • Вопрос задан
  • 172 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
function setNestedValue(root, ...args) {
  const val = args.pop();
  const key = (args = args.join('.').split('.')).pop();
  args.reduce((p, c) => p[c] = p[c] || {}, root)[key] = val;
}


const obj = {};
setNestedValue(obj, 'xxx', 'yyy', 'zzz', 69);
setNestedValue(obj, 'xxx.a.b.c', 187);
setNestedValue(obj, '_', 666);
Ответ написан
Комментировать
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
function setParam(args = {})
И передавать один аргумент-объект с произвольными свойствами, а не гору аргументов
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы