Artem3677
@Artem3677
Учусь

Как создать объект из массивов разной длинны. keys = [key1, key2, key3] values = [value1, value2, value3, value4, valu5, value6]. На выходе: {}?

Как создать объект из массивов разной длинны. keys = [key1, key2, key3] values = [value1, value2, value3, value4, valu5, value6]. На выходе: obj = {key1: value1, key2: value2, key3: value3, key1: value4, key2: value5, key3: value6}
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
const keys = ['key1', 'key2', 'key3'];
const values = ['value1', 'value2', 'value3', 'value4', 'valu5', 'value6'];

const makeGen = function*(arr) {
  let index = 0;
  const { length } = arr;
  
  while (true) {
    yield arr[index++ % length];
  }
}

const keyGen = makeGen(keys);
const valGen = makeGen(values);
const length = Math.max(keys.length, values.length);

const result = Array.from({ length }, () => [keyGen.next().value, valGen.next().value]);

console.log(JSON.stringify(result, null, 2));

/*
[
  [
    "key1",
    "value1"
  ],
  [
    "key2",
    "value2"
  ],
  [
    "key3",
    "value3"
  ],
  [
    "key1",
    "value4"
  ],
  [
    "key2",
    "valu5"
  ],
  [
    "key3",
    "value6"
  ]
]
*/
Ответ написан
Комментировать
sergey155
@sergey155
Как вариант

let keys = ['key1', 'key2', 'key3'];
let values = ['value1', 'value2', 'value3', 'value4', 'value5', 'value6'];

let obj = {};
for (let i = 0; i < values.length; i++) {
    let key = keys[i % keys.length];
    obj[key] = values[i];
}

console.log(obj);
Ответ написан
Ваш ответ на вопрос

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

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