【javascript】オブジェクトを配列に変換→結合する方法


Object
0:
id: 1
name: "dog"
1:
id: 2
name: "panda"
2:
id: 3
name: "cat"

Object
1:
id: 1
name: "snake"
1:
id: 2
name: "rabbit"
2:
id: 3
name: "olphin"

 

みたいなオブジェクトのかたまりをconcatを使って同じような

構成のオブジェクトと連結しようと思ったのですが

concat is a not functionで連結できず。

concatは配列のみ結合が許させるので、オブジェクト同士の結合は

できませんでした。

一番手っ取り早いのがスプレット演算子を使って結合する方法。

以下のように統合することができます。


const old = { {id: 1,name: "dog"}, {id: 1,name: "panda"}, {id: 1,name: "cat"}, };
const new = { {id: 1,name: "snake"}, {id: 1,name: "rabbit"}, {id: 1,name: "dolphin"}, };
const result = { ...old, ...new }

これが本命だったのですがkeyが同じの場合はnewオブジェクトに上書きされてしまいます。今回連結したいものは同じidを

持っているオブジェクト同士の結合なのでこの組み合わせでは結合せずに長さの変わらない配列になってしまいます。したがってこの策は見送り。

挙句Object.entries()を使って既存のオブジェクトの順番ごとに[key:value]の並びに整形して

取り出す案に落ち着きました。

オブジェクトは一つごとに配列に収めされます。[0]番目の要素には”0″、[1]番目の要素には

addressやidといった内包してあった要素がひとまとめに格納されています。


Array[0]
0: "0"
1:
id: 1
name: "dog"

Array[1]
0: "1"
1:
id: 1
name: "panda"

Array[2]
0: "2"
1:
id: 2
name: "panda"

これで配列として扱うことができるようになりました。

const new = origin_Data.concat(old);

取り出し方は[i][1][‘id’]とやや癖はありますが現在はこれがベストっぽい。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG