добавление новых значений в существующие ключи объекта - PullRequest
0 голосов
/ 14 января 2020

У меня есть объект с числовыми значениями, назначенными для клавиш

obj1 = {a : 10
        b : 5
        c : 6 }

, и я хочу уменьшить каждое число до нуля, чтобы у каждого ключа были все значения в этом диапазоне, то есть:

obj2 = {a : 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
        b : 5, 4, 3, 2, 1, 0
        c : 6, 5, 4, 3, 2, 1, 0}

Я попробовал .map, .apply и несколько других попыток итерации. как я могу выполнить sh это?

Ответы [ 4 ]

1 голос
/ 14 января 2020

Вот гораздо более простое решение:

const obj1 = { a: 5, b: 6, c: 3 };

let obj2;
Object.keys(obj1)
  .forEach((key) => {
    const size = obj1[key];
    obj2[key] = new Array(size + 1)
      .fill(0)
      .map((val, index) => size - index);
  });
console.log(obj2);

Полученный таким образом результат будет в следующем формате:

{
  a: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0],
  b: [5, 4, 3, 2, 1, 0],
  c: [6, 5, 4, 3, 2, 1, 0],
}
1 голос
/ 14 января 2020

Вы можете создать массив записей объектов, а затем использовать reduce() для создания объекта результата:

const obj1 = {
  a: 10,
  b: 5,
  c: 6
};

const obj2 = Object.entries(obj1).reduce((a, [k, v]) => ({
  ...a,
  [k]: Array(v + 1).fill(0).map(_ => v--)
}), {});

console.log(obj2);
0 голосов
/ 14 января 2020

let obj1 = {a : 10, b : 5, c : 6}

let res = Object.entries(obj1).reduce((acc, cur) => {
    return Object.assign(acc, {[cur[0]]: Array.from(Array(cur[1]+1).keys()).reverse().join()})
}, {})
        
console.log(res)
0 голосов
/ 14 января 2020

let obj1 = {
  a: 10,
  b: 5,
  c: 6,
};

let obj2 = Object.fromEntries(Object.entries(obj1).map(([k, v]) => [k, [...Array(v)].map((_, i) => v - i)]));
console.log(obj2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...