通过3维数组-JS迭代



我正在创建一个函数,该函数将将3维数组合并到一个对象数组中。

示例:

var input = [[['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']],
       [['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']]];

结果:

[
    {firstName: 'Joe', lastName: 'Blow', age: 42, role: 'clerk'},
    {firstName: 'Mary', lastName: 'Jenkins', age: 36, role: 'manager'}
]

所以我所做的是通过每个数组迭代,然后获取第一个元素和最后一个元素,然后将其放入对象中。

但是我被困在两件事中:

  1. 它不会仅使用myObj[employeeData[i][j][0]] = employeeData[i][j][k];获得数组中的所有项目阵列维度。

在这种情况下,这是:

[['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']]];
  1. 如果我将对象推入空数阵列,我将获得以下内容:

    [[[对象对象] { 年龄:36, FirstName:"玛丽", 最后一个名称:"詹金斯", 角色:"经理"},[圆形对象],[圆形对象],[圆对象对象],[圆对象对象],[圆形对象],[圆形对象],[圆形对象对象],[圆形对象],[圆形对象],[循环对象],[圆形对象],[圆对象对象],[圆对象对象],[圆形对象],[圆形对象对象],[圆形对象],[圆形对象对象]]

不确定什么循环对象含义。

到目前为止,这是我的代码:

function arrayObject(data) {
  var arr = [];
  var myObj = {};
  for(var i = 0; i < data.length; i++){
    for(var j = 0; j < data[i].length; j++){
      for(var k = 0; k < data[i][j].length; k++){
        myObj[data[i][j][0]] =  data[i][j][k]; 
        arr.push(myObj);
      }
    }
  }
  return arr;
}
var input = [[['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']],
            [['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']]];
var output = arrayObject(input);
console.log(output);

你犯了错误:

  • 首先,您不需要3个循环,正好两个会这样做,
  • 第二,Myobj应该是上环的本地,因为它的价值将会在输入内部的每个数组中更改。
function arrayObject(data) {
  var arr = [];
  for(var i = 0; i < data.length; i++){
      var myObj = {};
          for(var j = 0; j < data[i].length; j++){
              myObj[data[i][j][0]] =  data[i][j][1]; 
          }
      arr.push(myObj);
  }
  return arr;
}
var input = [
  [
      ['firstName', 'Joe'], 
      ['lastName', 'Blow'], 
      ['age', 42], 
      ['role', 'clerk']
  ],
  [
      ['firstName', 'Mary'],
      ['lastName', 'Jenkins'],
      ['age', 36],
      ['role', 'manager']
  ]
];
var output = arrayObject(input);
console.log(output);

您可以考虑以下内容:

var items = [[['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']], [['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']]];
var result = [];
// first loop through items
items.forEach(function(item)
{
   var obj = {};
   // then loop through properties
   item.forEach(function (value)
   {
      // then set property and value
      obj[value[0]] = value[1];
   });
   // once all is done push the object
   result.push(obj);
});
console.log(result);

哪个结果将具有您想要的所需格式。

希望有帮助

最新更新