Как преобразовать объект массива объекта в массив объекта в Javascript - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть объект массива объекта

{
  "94":[{"Full Name":"Phalla Morn"}],
  "95":[{"Full Name":"Pum Chhenghorng"}],
  "99":[{"Full Name":"Proen Pich"}]
}

Я хочу преобразовать его в массив объекта :

[
  {"Full Name":"Phalla Morn"}, 
  {"Full Name":"Pum Chhenghorng"},
  {"Full Name":"Proen Pich"}
]

Пожалуйста помоги.

Ответы [ 6 ]

0 голосов
/ 26 апреля 2018

Попробуйте: нужно позаботиться о массивах с несколькими объектами в своем значении.

let data = {
      "94": [{
        "Full Name": "Phalla Morn"
      }],
      "95": [{
        "Full Name": "Pum Chhenghorng"
      },{
        "Full Name": "Ryann"
      }],
      "99": [{
        "Full Name": "Proen Pich"
      }]
    };
    
    let obj = [];
    
    Object.keys(data).map(item => {
      data[item].map(item => {
        obj.push(item);
      });
    });
    
    console.log(obj);
0 голосов
/ 26 апреля 2018

Вы можете попробовать следующее:

var obj = {
    "94":[{"Full Name":"Phalla Morn"}],
    "95":[{"Full Name":"Pum Chhenghorng"}],
    "99":[{"Full Name":"Proen Pich"}]
    }

var arr = Object.values(obj).map(o => o[0]);
console.log(arr)
0 голосов
/ 26 апреля 2018

Простой JS - поскольку Object.values ​​не поддерживается IE вообще

var arr = [],
    obj =  {"94":[{"Full Name":"Phalla Morn"}],"95":[{"Full Name":"Pum Chhenghorng"}],"99":[{"Full Name":"Proen Pich"}]};

Object.keys(obj).forEach(function(k) {
  arr.push(obj[k][0])
});
console.log(arr)
0 голосов
/ 26 апреля 2018

Вы можете использовать два цикла forEach и убедиться, что если в массиве 94 или 95 есть несколько объектов, то это также учитывается этой динамической кодовой логикой:

let obj = {
  "94":[{"Full Name":"Phalla Morn"}],
  "95":[{"Full Name":"Pum Chhenghorng"}],
  "99":[{"Full Name":"Proen Pich"}]
}; 
let res = [];
Object.keys(obj).forEach((key)=>{
   obj[key].forEach((innerObj)=>{
     res.push(innerObj);
   }); 
});
console.log(res);

Или вы можете использовать Object.values вместе с оператором spread:

let obj = {
  "94":[{"Full Name":"Phalla Morn"}],
  "95":[{"Full Name":"Pum Chhenghorng"}],
  "99":[{"Full Name":"Proen Pich"}]
}; 
let res = [];
Object.keys(obj).forEach((key)=>{
    res.push(...Object.values(obj[key]));
});
console.log(res);
0 голосов
/ 26 апреля 2018

Используйте Object.values для извлечения значений из объекта, а затем используйте [].concat(... для отображения карты:

const input = {
  "94": [{
    "Full Name": "Phalla Morn"
  }],
  "95": [{
    "Full Name": "Pum Chhenghorng"
  }, {
    "Full Name": "example other"
  }],
  "99": [{
    "Full Name": "Proen Pich"
  }]
};
const output = [].concat(...Object.values(input));
console.log(output);
0 голосов
/ 26 апреля 2018

Получите внутренние массивы с Object.values() и сгладьте с помощью , распространяя в Array.concat():

const arr = {"94":[{"Full Name":"Phalla Morn"}],"95":[{"Full Name":"Pum Chhenghorng"}],"99":[{"Full Name":"Proen Pich"}]};
    
const result = [].concat(...Object.values(arr));

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...