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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环遍历两个字符串数组并将它们设置为对象属性相关的知识,希望对你有一定的参考价值。

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

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

例:

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

谢谢!

答案

你可以使用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)
另一答案

您可以使用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)
另一答案

您可以使用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; }
另一答案

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

var obj = [];    

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

以上是关于循环遍历两个字符串数组并将它们设置为对象属性的主要内容,如果未能解决你的问题,请参考以下文章

遍历具有属性的对象数组并将它们打印到 DOM

循环遍历数组,并将子JSON转换为observablearray?

如何使用 RegExp 循环遍历字符串并将其分段为数组?

如何循环遍历动态大小的数组并将属性作为参数传递给可变参数函数?

循环遍历一个大数组并将值加在一起 ​​C#

计算属性名称必须是“字符串”、“数字”、“符号”或“任意”类型