Computer >> Máy Tính >  >> Lập trình >> Javascript

Làm cách nào để chuyển đổi các cặp mảng lồng nhau thành các đối tượng trong một mảng trong JavaScript?

Giả sử, chúng ta có một mảng các mảng như thế này -

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

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng như vậy. Hàm phải tạo một mảng đối tượng dựa trên mảng mảng này.

Mảng đầu ra phải chứa một đối tượng cho mỗi người dùng duy nhất và các chi tiết khác về nó.

Do đó, đầu ra cho mảng sẽ giống như -

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

Ví dụ

Mã cho điều này sẽ là -

const arr = [
   [
      ['firstName', 'Joe'],
      ['lastName', 'Blow'],
      ['age', 42],
      ['role', 'clerk'],
      [
         ['firstName', 'Mary'],
         ['lastName', 'Jenkins'],
         ['age', 36],
         ['role', 'manager']
      ]
   ]
];
const convertToObject = (arr = []) => {
   const empty = {};
   const res = arr.map(el => {
      const object = this;
      el.forEach(attr => {
         let name = attr[0], value = attr[1];
         object[name] = value;
         return object;
      }, object);
      return this;
   }, empty);
   return res;
}
console.log(convertToObject(arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

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