Перебор двух массивов строк и установка их в качестве свойств объекта

#javascript #arrays #loops #object

#javascript #массивы #циклы #объект

Вопрос:

Мне нужно перебрать два массива строк и установить их в качестве свойств объекта. Оба массива имеют одинаковую длину.

Я пробовал перебирать один массив, но ничего не могу найти о переборе двух массивов одновременно и установке их в качестве свойств в объекте.

Пример:

 var propertyName = ["a", "b", "c", "d"];
var propertyValue = ["1", "2", "3", "4"];
var = {};
  

Ожидаемый результат:

 obj = [
   {propertyName: "a", propertyValue: "1"},
   {propertyName: "b", propertyValue: "2"},
   {propertyName: "c", propertyValue: "3"},
   {propertyName: "d", propertyValue: "4"},
];
  

(Обновление для того, что я пробовал)
Это то, что я пробовал до сих пор, но не смог понять, как добраться до второго массива. Спасибо всем, кто так быстро ответил.

 for (var in propertyName) {
    obj.propertyName = propertyName[i].toString();
    System.log(JSON.stringify(obj));
}
  

Спасибо!

Комментарии:

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

2. Как эти массивы заполняются в первую очередь? если вы хотите сохранить их как единый объект (пары ключ, значение), я не понимаю, почему вы должны хранить их в двух отдельных массивах. Я бы посоветовал вам начать с того места, где эти массивы заполняются

Ответ №1:

Вы можете использовать функцию array.map():

 let propertyName = ["a", "b", "c", "d"];
let propertyValue = ["1", "2", "3", "4"];

let obj = propertyName.map((name, index) => ({propertyName: name, propertyValue: propertyValue[index]}))
console.log(obj)  

Ответ №2:

Вы можете использовать map и создать объект с желаемыми значениями

 var propertyName = ["a", "b", "c", "d"];
var propertyValue = ["1", "2", "3", "4"];

let op = propertyName.map((e,i)=> ({
  propertyName: e,
  propertyValue: propertyValue[i]
}))

console.log(op)  

Ответ №3:

если вы точно знаете, что индекс каждого массива совпадает с индексом другого массива в их определенном порядке, тогда вы можете просто использовать их в том же цикле, как это…

 var obj = [];    

for(var i = 0; i < propertyName.length; i  ) {
    obj.push({
        propertyName: propertyName[i], 
        propertyValue: propertyValue[i]
    });
}
  

Ответ №4:

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

Это работает для произвольного количества свойств, при условии, что длина массива одинакова.

 var propertyName = ["a", "b", "c", "d"],
    propertyValue = ["1", "2", "3", "4"],
    result = Object
        .entries({ propertyName, propertyValue })
        .reduce((r, [k, a]) => a.map((v, i) => Object.assign(r[i] || {}, { [k]: v })), []);

console.log(result);  
 .as-console-wrapper { max-height: 100% !important; top: 0; }