Конвертировать группы массивов в объект

1

У меня есть массив. И я хочу преобразовать их в группу объектов.

ниже мой массив

[ null,
[ 5, 6 ],
[ 7, 8 ],
[ 9, 10 ],
[ 13, 14 ] ]

Затем я попробовал их преобразовать в объект по парам, но у меня было следующее:

{ '0': null,
'1': [ 5, 6 ],
'2': [ 7, 8 ],
'3': [ 9, 10 ],
'4': [ 13, 14 ] }

То, что я пытаюсь достичь, выглядит следующим образом:

    {
        "0": 5,
        "1": 6,
    },
    {
        "0": 7,
        "1": 8,
    },
    {
        "0": 9,
        "1": 10,
    },
    {
        "0": 13,
        "1": 14,
    },

спасибо за тех, кто поможет

  • 1
    Что вы пробовали? пожалуйста приложите соответствующий код к вопросу
  • 0
    stackoverflow.com/questions/4215737/convert-array-to-object
Показать ещё 1 комментарий
Теги:
object
arrays
sorting

2 ответа

0
Лучший ответ

У вас должно быть условие, которое пропускает null значение в массиве:

function changeArray(arr){
  var res = [];
  arr.forEach((item)=>{
    let obj = {};
    if(item){
      item.forEach((val, index)=>{
        obj[index] = val;
      });
     res.push(obj);
    }
  });
  return res;
}

var arr1 = [ null,
[ 5, 6 ],
[ 7, 8 ],
[ 9, 10 ],
[ 13, 14 ] ];
console.log(changeArray(arr1));

var arr2 = [ null,
[ 5, 6, 7 ],
[ 7, 8, 9 ]];
console.log(changeArray(arr2));
  • 0
    Как я могу превратить это в функцию? я вроде новичок в JS
  • 0
    @ Tramyer см обновленный ответ. Если вы новичок, тогда используйте простой цикл, как указано выше, вместо сложных операций filter и map . Так что вы можете изучить стиль кода и логику.
Показать ещё 2 комментария
2

Вы можете фильтровать значения фальши и объекты карты, где вы назначили массив.

var array = [null, [5, 6], [7, 8], [9, 10], [13, 14]],
    result = array
        .filter(Boolean)
        .map(a => Object.assign({}, a));
        
console.log(result);

Обернуто функцией

function getObjects(array) {
    return array
        .filter(Boolean)
        .map(a => Object.assign({}, a));
}

console.log(getObjects([null, [5, 6], [7, 8], [9, 10], [13, 14]]));
  • 0
    попробовал ваш код, но когда я попытался создать функцию с ним. У меня такой же результат выше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню