Преобразование массива и массива массивов в массив объектов

Я столкнулся с проблемами при создании массива объектов с использованием массива и массива массивов. В моем сценарии у меня 400 столбцов и 5000 строк. Имея имена столбцов в отдельном массиве и пользовательские данные в массиве массивов.

Мои ожидания: Массив объектов = Массив (имя_столбца) + Массив_массивов (Пользовательские_данные)

var cols_names=['name','address','phoneno'];
var arr_of_arrs=[
    ['ABC','INDIA','0989898976'],
    ['XYZ','USA','0989898998'],
    ['CDE','UK','0989898956']
    ];
    
const arr_of_obj = arr_of_arrs.map((...cols_names) => ({cols_names}));
console.info(arr_of_obj);

Я получил такой вывод:

[
  { cols_names: [ [Array], 0, [Array] ] },
  { cols_names: [ [Array], 1, [Array] ] },
  { cols_names: [ [Array], 2, [Array] ] }
]

мне нужно вот так:

[
  {
    "name":"ABC",
    "address":"INDIA",
    "phoneno":"0989898976"
  },
  {
   "name":"XYZ",
    "address":"USA",
    "phoneno":"0989898998"
  },
  {
    "name":"CDE",
    "address":"UK",
    "phoneno":"0989898956"
    
  }
]

Примечание. Я не могу написать такой код ниже, потому что у меня 400 столбцов. Мне не следует статически указывать в коде имена всех столбцов:

const arr_of_obj = arr_of_arrs.map(([name,address,phoneno]) => ({name, address,phoneno}));

console.info(arr_of_obj);
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

var cols_names = ['name', 'address', 'phoneno'];
var arr_of_arrs = [
    ['ABC', 'INDIA', '0989898976'],
    ['XYZ', 'USA', '0989898998'],
    ['CDE', 'UK', '0989898956']
];

var result = arr_of_arrs.map(function(arr) {
    var obj = {};
    cols_names.forEach(function(col, index) {
        obj[col] = arr[index];
    });
    return obj;
});

console.info(result);

Попробуйте следующее:

var cols_names=['name','address','phoneno'];
var arr_of_arrs=[
    ['ABC','INDIA','0989898976'],
    ['XYZ','USA','0989898998'],
    ['CDE','UK','0989898956']
    ];
    
const res=arr_of_arrs.map(r=>Object.fromEntries(r.map((v,i)=>[cols_names[i],v])));

console.info(res)

Это очень похоже на то, что сделал @NeERAJTK, только вместо цикла .map() используется .forEach().

Это хороший лайнер!

NeERAJ TK 16.08.2024 08:31

Другие вопросы по теме

Похожие вопросы

Чтение переменной из файла через javascript в html-файле (на стороне клиента)
Наверняка есть более простой способ сделать это? HTML, CSS, JS
Обеспечивают ли левый и правый сдвиг лучшую производительность по сравнению с операциями умножения и деления?
Почему клавиша ENTER отпускает ожидание?
Объединить объекты внутри массива объектов с дубликатами
Проблемы доступности тегов span/mark, вложенных в абзацы
Каков наилучший масштабируемый способ реализации ContextProvider для выборки и фильтрации данных?
Кнопка воспроизведения звука запускает фантомный второй щелчок, когда currentTime изменяется программно, предотвращая воспроизведение
Как я могу вызвать повторную отрисовку элемента (который использует состояние) в функции обратного вызова?
CSS и JavaScript не применяются правильно после переноса содержимого HTML в компонент приложения Angular из-за проблем с инкапсуляцией просмотра и порядком загрузки скриптов