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

Ссылка скопирована
1 ответ

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

Дополнительно:

С помощью циклов.

  • У вас написана бессмыслица. В объекте ключи не могут повторяться.
  • ключи будут перезаписаны. key2: value2,key2: value5 в итоге оставит только key2: value5.
  • Lynn «Кофеман», можно использовать массив объектов
    let data = [   { key: 'key1', value: 'value1' },   { key: 'key2', value: 'value2' },   { key: 'key3', value: 'value3' },   { key: 'key1', value: 'value4' },   { key: 'key2', value: 'value5' },   { key: 'key3', value: 'value6' } ];

    let data = [ { key: 'key1', value: 'value1' }, { key: 'key2', value: 'value2' }, { key: 'key3', value: 'value3' }, { key: 'key1', value: 'value4' }, { key: 'key2', value: 'value5' }, { key: 'key3', value: 'value6' } ];

  • Фрагменты кода надо размещать в виде текста и оборачивать тэгом code для корректного отображения. Удобно делать кнопкой </>
    Это обязательно, см.п.3.8 Регламента.
    Сюда же относится traceback, ввод и вывод в консоли и другая структурированная текстовая инфа.
  • Sergey, можно, но это будет какой-то другой результат. Лучше бы автор сам определился чего ему надо.
  • Ответы:

    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 }, () =&gt; [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"   ] ] */

    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 }, () =&gt; [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" ] ] */

    Как вариант

    let keys = ['key1', 'key2', 'key3']; let values = ['value1', 'value2', 'value3', 'value4', 'value5', 'value6'];  let obj = {}; for (let i = 0; i &lt; values.length; i++) {     let key = keys[i % keys.length];     obj[key] = values[i]; }  console.log(obj);

    let keys = ['key1', 'key2', 'key3']; let values = ['value1', 'value2', 'value3', 'value4', 'value5', 'value6']; let obj = {}; for (let i = 0; i &lt; values.length; i++) { let key = keys[i % keys.length]; obj[key] = values[i]; } console.log(obj);

    • // { "key1": "value4", "key2": "value5", "key3": "value6" }

      // { "key1": "value4", "key2": "value5", "key3": "value6" }

      Значения перезаписались под теми же ключами.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Дмитрий К. Ответ

    Для создания объекта из массивов разной длины, необходимо учитывать, что если массив ключей (keys) короче массива значений (values), то лишние значения будут проигнорированы. В то же время, если массив значений (values) короче массива ключей (keys), то для недостающих значений будет установлено значение null.

    Пример кода на языке PHP:

    $keys = ['key1', 'key2', 'key3'];
    $values = ['value1', 'value2', 'value3', 'value4', 'value5', 'value6'];
     
    $obj = [];
     
    for ($i = 0; $i &lt; count($keys); $i++) {
        if (isset($values[$i])) {
            $obj[$keys[$i]] = $values[$i];
        } else {
            $obj[$keys[$i]] = null;
        }
    }
     
    print_r($obj);

    $keys = ['key1', 'key2', 'key3']; $values = ['value1', 'value2', 'value3', 'value4', 'value5', 'value6']; $obj = []; for ($i = 0; $i &lt; count($keys); $i++) { if (isset($values[$i])) { $obj[$keys[$i]] = $values[$i]; } else { $obj[$keys[$i]] = null; } } print_r($obj);

    В данном коде мы проходим по массиву ключей (keys) и проверяем, есть ли значение с таким индексом в массиве значений (values). Если значение существует, то добавляем его в объект под соответствующим ключом. Если значения нет, то устанавливаем значение null.

    Таким образом, на выходе мы получим объект, в котором ключи будут взяты из массива keys, а значения из массива values. Лишние значения будут проигнорированы, а для недостающих значений будет установлено значение null.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно