【问题标题】:Looping through two string arrays and setting them as object properties循环遍历两个字符串数组并将它们设置为对象属性
【发布时间】:2019-04-05 18:28:17
【问题描述】:

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

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

例子:

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


【解决方案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】:

    您可以使用地图并构建具有所需值的对象

    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】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-10-22
          • 2017-10-27
          • 1970-01-01
          • 1970-01-01
          • 2014-12-19
          • 2021-11-09
          • 1970-01-01
          相关资源
          最近更新 更多