преобразовать два массива в объект - JavaScript - PullRequest
0 голосов
/ 30 октября 2018

У меня проблема с преобразованием двух массивов в один объект массива.

Это мой первый массив; Давайте назовем это « keys ». Я хочу сделать каждый элемент этого массива ключом объекта.

["name", "age", "gender", "status"]

Это мой второй массив, который будет действовать как значение. давайте назовем это " header "

[["Luke May", 43, "male", "married"]
["Sarah Saw", 54, "female", "single"]
["Magac gose", 51, "male", "single"]]

Я хочу, чтобы мой объект выглядел примерно так. давайте назовем это " arrValues ​​"

[
   {name: "Luke May", age: 43, gender: "male", status: "married"}
   {name: "Sarah Saw", age: 54, gender: "female", status: "single"}
   {name: "Magac gose", age: 51, gender: "male", status: "single"}
]

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

что у меня до сих пор

Что я ищу

Пока это моя попытка:

var arrh = header
var data = []
    for(var i = 1; i < header.length; i++){
        var dataToInsert = {}
        var values = arrValues[i];

        for(var x = 0; x < header.length; x++){
            var kx = header[x];
            dataToInsert[kx] = arrValues[x]
        }
        data.push(dataToInsert)
}

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

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

var results = [
  ["Luke May", 43, "male", "married"],
  ["Sarah Saw", 54, "female", "single"],
  ["Magac gose", 51, "male", "single"]
];
var keys = ["name", "age", "gender", "status"];

var objectArray = []; // your result

results.forEach(r => {
  let obj = {};
  r.forEach((r, i) => {
obj[keys[i]] = r;
  });
  objectArray.push(obj);
});

console.log(objectArray);
0 голосов
/ 30 октября 2018

Ниже ответ просто дать представление о том, как мы можем решить эту проблему, используя простой JavaScript (с циклом for)

var keys = ["name", "age", "gender", "status"];
var header = [
     ["Luke May", 43, "male", "married"],
     ["Sarah Saw", 54, "female", "single"],
     ["Magac gose", 51, "male", "single"]
];

for(i=0; i<header.length; i++){
  var obj={};
  for (j=0; j<keys.length; j++){
      obj[keys[j]]=header[i][j];
   }
  arrValues.push(obj);
}

arrValues;

и результат будет

[
   {name: "Luke May", age: 43, gender: "male", status: "married"}
   {name: "Sarah Saw", age: 54, gender: "female", status: "single"}
   {name: "Magac gose", age: 51, gender: "male", status: "single"}
]
0 голосов
/ 30 октября 2018
const keys = ["name", "age", "gender", "status"];

const obj = [
  ["Luke May", 43, "male", "married"],
  ["Sarah Saw", 54, "female", "single"],
  ["Magac gose", 51, "male", "single"]
].map(x => {
  let m = {};
  for (let i = 0; i < keys.length; i++) m[keys[i]] = x[i];
  return m;
});
console.log(obj)
...