繁体   English   中英

将深度嵌套的 arrays 推入 Object 属性和键

[英]Pushing deeply nested arrays into Object properties and keys

function transformEmployeeData(employeeData) {
  var myObj = {};
  var myKeys = [];
  var myValues = [];

  for(var i=0; i < employeeData.length; i++) {
    for(var y=0; y<employeeData[i].length; y++) {
      for(var q=0; q< employeeData[i][y].length; q+=2) {      
        myKeys.push(employeeData[i][y][q]);    
      }
    }
  }

  for(var i=0; i < employeeData.length; i++) {
    for(var y=0; y<employeeData[i].length; y++) {
      for(var q=0; q< employeeData[i][y].length; q+=2) {      
        myValues.push(employeeData[i][y][q]);    
      }
    }
  }



  return myValues;
}

transformEmployeeData([
    [
        ['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']
    ],
    [
        ['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']
    ]
]);



/*
Output should look something like..

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

我正在尝试将正确的数据推送到 myKeys 和 myValues 中。 这样我就可以将它们分配为 object 键和值。 但是,我不知道该怎么做,我正在使用 q+=2 并且失败了。

没有循环是可能的。 在这种情况下,我会使用以下内容:

function transformEmployeeData(employeeData) {
 return Object.fromEntries(employeeData.flat());
}

例子:

 function transformEmployeeData(employeeData) { return Object.fromEntries(employeeData.flat()); } let data = transformEmployeeData([ [ ['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk'] ], [ ['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager'] ] ]); console.log(data)

请注意,这只会取消一层。

 function transformEmployeeData(employeeData) {
  var myValues = [];

  for(var i=0; i < employeeData.length; i++) {
    myValues.push(Object.fromEntries(employeeData[i]))
  }
  return myValues;
}

您可能会尝试一些更简单的方法,并在您的起始 arrays 上循环,并使用它们的索引来保持插入直线。

 const oldFormat = [ [ ['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk'] ], [ ['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager'] ] ]; let newFormat = []; for (let index = 0; index < oldFormat.length; index++) { newFormat[index] = {} for(attribute in oldFormat[index]) { newFormat[index][oldFormat[index][attribute][0]] = oldFormat[index][attribute][1]; } } console.log(newFormat);

您可以从您的键/值 arrays 创建一个 Map object,然后使用.Z1D78DC8ED51214E5018B5114FE2 格式为您。

 var arr = [[['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']],[['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']]] var outputArr = arr.map(element =>{ return Object.fromEntries(new Map(element)); }) console.log(outputArr)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM