🙆
配列の中に入っているオブジェクトから 2次元配列を作る
頭がピヨってすぐ分からなくなる。
泣きついて@taitoに教えてもらった。
やりたいこと
これを
[
{
“id”: “01234",
“name”: “TestName01"
},
{
“id”: “12345",
“name”: “TestName02"
}
]
↓
こうしたい
[[‘01234’, ‘TestName01’], [‘12345’, ‘TestName02’]]
やる
function test() {
const member = [
{
"id": "01234",
"name": "TestName01"
},
{
"id": "12345",
"name": "TestName02"
}
]
const arrayMember = recordsMapValues_(member)
console.log(arrayMember)
}
/**
* オブジェクト配列 から 2次元配列(表) を作る
* @param {Array<object>} records - オブジェクト配列
* @return {Array<Array>} values - 2次元配列
*/
function recordsMapValues_(records) {
const values = [];
values.push(Object.keys(records[0])); // ヘッダー
records.forEach(record => values.push(Object.values(record))); // 値
return values;
}
やってること
Object.keys()
Object.values()
forEach()
空配列を const values = []; で作る。これで[]ができた。
ここに、ヘッダー的要素としてオブジェクトのkeyを追加する、それを values.push(Object.keys(records[0]))でやっている。
records[0]が { "id": "01234", "name": "TestName01"}であり、そのkeyである id,name が[]に入る。keysとなっているが、配列の0だけを指定することで実質kye単数になってる的な。
次に、これと同じような形、逆のような形で、オブジェクトの値(value)を[]に入れていきたい。ヘッダー的要素とは異なり、複数のレコードがあるのでforEachでやっている。
参考
配列の中にオブジェクトが入っている場合のvalue値の取得方法二次元配列 Javascript
Discussion