Итерация нескольких массивов в объект, используя javascript - PullRequest
0 голосов
/ 12 марта 2020

У меня есть несколько массивов, первый содержит ключи, а остальные содержат значения.

Array[
  "name",
  "surname",
  "city",
  "age"
],
Array[
  "John",
  "Doe",
  "San Francisco",
  "27"
],
Array[
  "Nancy",
  "Doe",
  "New York",
  "15"
],
Array[
  "Maria",
  "Doe",
  "Texas",
  "30"
],

И я хочу объединить массивы в такой объект:

{
  "name": "John"
  "surname": "Doe"
  "city": "San Francisco"
  "age": "27"
},
{
  "name": "Nancy"
  "surname": "Doe"
  "city": "New York"
  "age": "15"
},
{
  "name": "Maria"
  "surname": "Doe"
  "city": "Texas"
  "age": "30"
}

Как это сделать, используя js, так как длина, ключи и значения массивов могут изменяться.

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

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

var data = [["name", "surname", "city", "age"], ["John", "Doe", "San Francisco", "27"], ["Nancy", "Doe", "New York", "15"], [ "Maria", "Doe", "Texas", "30"]],
    result = data
        .slice(1)
        .map(a => Object.fromEntries(data[0].map((k, i) => [k, a[i]])));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 12 марта 2020

Ваш массив содержит семанти c ошибок.

//This is your Array in JS:

let array = [
  ["name", "surname", "city", "age"],
  ["John", "Doe", "San Francisco", "27"],
  ["Nancy", "Doe", "New York", "15"],
  ["Maria", "Doe", "Texas", "30"]
];

//we need to sepparete keys and values
const keys = array.shift(); // ["name", "surname", "city", "age"]

//now array has just values and keys has the first item of an array

let arrOfObjects = array.map(item => {
  let obj = {};
  for (i = 0; i < item.length; i++) {
    obj[keys[i]] = item[i];
  }
  return obj;
});
console.log(arrOfObjects);

консоль:

[{"name": "John", "фамилия": "Doe", "city": "San Francisco", "age": "27"}, {"name": "Nancy", "фамилия": "Doe", "city": "New York", "age": "15"}, {"name": " Мария "," фамилия ":" Доу "," город ":" Техас "," возраст ":" 30 "}]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...