是否可以通过循环数组中的数据在JavaScript中创建对象?

时间:2020-01-14 11:52:19

标签: javascript loops object data-conversion

就像标题说的那样。我想从下面数组中的数据创建一个新对象: 对象的名称是名字和姓氏。

//this is the input
arrayToObject([['Christ', 'Evans', 'Male'], ['Robert', 'Downey', 'Male']]);

//this is output that i want

// 1. Christ Evans:
// { firstName: 'Christ',
//   lastName: 'Evans',
//   gender: 'Male',

// 2. Robert Downey:
// { firstName: 'Robert',
//   lastName: 'Downey',
//   gender: 'Male',


// this is code that i write
function arrayToObject(arr) {
  
  let ObjName=""
  for (let i = 0; i<arr.length;i++){
    
  
      let firstName=arr[i][0]
      let lastName=arr[i][1]
      let ObjName=firstName.concat(' ',lastName)
      let gender=arr[1][2]

      ObjName = { // idk how to make the object.
          'firstName':firstName,
          'lastName':lastName,
          'gender':gender,
          
      }
  }
  
}

我在我可以声明该对象的部分中苦苦挣扎。

2 个答案:

答案 0 :(得分:0)

您可以使用Object.fromEntries的嵌套方法,并使用keys数组映射属性。

#4
var data = [['Christ', 'Evans', 'Male'], ['Robert', 'Downey', 'Male']],
    keys = ['firstName', 'lastName', 'gender'],
    result = Object.fromEntries(data.map(a => [
        a.slice(0, 2).join(' '),
        Object.fromEntries(keys.map((k, i) => [k, a[i]]))
    ]));

console.log(result);

答案 1 :(得分:-1)

我想您想要一个具有以下结构的对象数组:

[
  {
    "firstName": "Christ",
    "lastName": "Evans",
    "gender": "Male"
  },
  {
    "firstName": "Robert",
    "lastName": "Downey",
    "gender": "Male"
  }
]

在这种情况下,您可以简单地使用Array.prototype.map,并且在回调中只需使用数组解构将第二级数组解压缩为firstNamelastName和{{1} }:

gender

相关问题