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

问题描述 投票:0回答:4

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

我已经尝试循环遍历一个数组,但无法找到任何关于一次循环两个数组并将它们设置为对象属性的内容。

例:

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

谢谢!

javascript arrays loops object
4个回答
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
投票

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

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

0
投票

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

var obj = [];    

for(var i = 0; i < propertyName.length; i++) {
    obj.push({
        propertyName: propertyName[i], 
        propertyValue: propertyValue[i]
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.