Как создать массив объектов из массивов

86
16 февраля 2022, 07:50

Подскажите, пожалуйста как создать массив из объектов. Вот пример

var arrKeys = ['имя', 'любимый цвет', 'любимое блюдо']; 
var arrArrs = [ 
  ['Василий'], 
  ['Мария'], 
  ['Иннокентий'] 
]; 
 
 
var getData = function(arrKeys, arrArrs){ 
  var newArr = [] 
  var customObject = new Object(); 
  
  console.log(customObject[arrKeys[0]] = arrArrs[0][0] ) 
 
  return newArr 
  } 
   
  console.log(getData(arrKeys, arrArrs))

Как мне в консоль получить массив который выглядел бы так [{'имя':'Василий'},{'имя':'Мария'},{'имя':'Иннокентий'}]

Что я делаю не так,почему мне в консоль возвращается значение первого ключа, а не ключ-значение ?

Answer 1

var arrKeys = ['имя', 'любимый цвет', 'любимое блюдо']; 
var arrArrs = [ 
  ['Василий'], 
  ['Мария'], 
  ['Иннокентий'] 
]; 
 
var getData = (arrKeys, arrArrs) => { 
  return arrArrs.map(val => ({[arrKeys[0]] : val.toString()})); 
} 
   
console.log(getData(arrKeys, arrArrs));

Answer 2

Вот так я умею делать, а как задавать имя свойства в объекте через значение в arrKeys я не знаю и таким обычно не пользуются.

let arrKeys = ['имя', 'любимый цвет', 'любимое блюдо']; 
let arrArrs = [ 
  ['Василий'], 
  ['Мария'], 
  ['Иннокентий'] 
]; 
 
let customArr = []; 
 
for (let i = 0; i < arrArrs.length; i++) { 
    let customObject = { 
        имя: arrArrs[i][0] 
    } 
    customArr.push(customObject); 
} 
 
console.log(customArr);

UPD: нашёл решение, это синтаксис ES6, нужно просто указать имя свойства в []

let arrKeys = ['имя', 'любимый цвет', 'любимое блюдо']; 
let arrArrs = [ 
  ['Василий'], 
  ['Мария'], 
  ['Иннокентий'] 
]; 
 
let customArr = () => { 
    let massiv = []; 
    for (let i = 0; i < arrArrs.length; i++) { 
        let customObject = { 
            [arrKeys[0]]: arrArrs[i][0] 
        } 
 
        massiv.push(customObject); 
    } 
    return massiv; 
} 
 
console.log(customArr());

Answer 3

Вы инициализируете customObject, а возвращаете пустой newArr

Надо так:

var arrKeys = ['имя', 'любимый цвет', 'любимое блюдо'];
var arrArrs = [
  ['Василий'],
  ['Мария'],
  ['Иннокентий']
];
var getData = function(arrKeys, arrArrs){
  var newArr = {}
  console.log(newArr[arrKeys[0]] = arrArrs[0][0] )
  return newArr
}
console.log(getData(arrKeys, arrArrs))
READ ALSO
Одно и тоже значение Math.random в переменной

Одно и тоже значение Math.random в переменной

Всем приветНачал изучать JavaScript и столкнулся с ошибкой в книге

82
Как можно задать имя html файлу при сохранении в pdf через браузер?

Как можно задать имя html файлу при сохранении в pdf через браузер?

Есть форма с инпутом содержащим ФИОМожно ли сделать так, чтобы при сохранении файла как pdf в браузере- имя файла было Фамилия

104
Ошибка при чтении XML файла

Ошибка при чтении XML файла

Здравствуйте хочу вывести в консоль атрибут из xml файла

76
C#. Объясните смысл преобразования данных [дубликат]

C#. Объясните смысл преобразования данных [дубликат]

Объясните пожалуйста как работает ключевое checked в данном примере, в 1-ом просто выйдет 0 в консоли из-за переполнения, во втором же программа...

84