遍历两个字符串数组并将它们设置为对象属性

时间:2019-04-05 18:28:18

标签: javascript arrays loops object

我需要遍历两个字符串数组,并将它们设置为对象属性。两个数组的长度相同。

我尝试遍历一个数组,但是找不到关于一次遍历两个数组并将它们设置为对象中的属性的任何信息。

示例:

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));
}

谢谢!

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

您可以使用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)

答案 2 :(得分:1)

您可以short hand properties并将所有值映射到同一索引对象。

这适用于任意数量的属性,只要数组的长度相同即可。

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; }

答案 3 :(得分:0)

如果您确定每个数组的索引都按照定义的顺序与另一个数组的索引匹配,则可以像这样在同一循环中使用它们...

var obj = [];    

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