オブジェクトの配列がすべて同じキーを持つ必要がありますが、一部のキーがありません。欠落しているキーに一般的な値を入力したいと思います。オブジェクトの配列に欠けているキーを埋める方法は?
私はこれを(ネイティブに、またはライブラリを介して)行うための簡単な方法を探しています。私が今使っているコードは、私の訓練されていない目をかなり重く見ていて、何かをする退屈な方法単純なものがありますが。
var arr = [{
"a": 1,
"b": 2,
"c": 3
},
{
"a": 10,
"c": 30
},
{
"b": 200,
"c": 300
},
]
// get the list of all keys
var allkeys = []
arr.forEach((objInArr) => {
allkeys = allkeys.concat(Object.keys(objInArr))
})
// check all arr entries for missing keys
arr.forEach((objInArr, i) => {
allkeys.forEach((key) => {
if (objInArr[key] === undefined) {
// the generic value, in this case 0
arr[i][key] = 0
}
})
})
console.log(arr)
注:非常に限られたブラウザのサポートを持っていますそれはまったく存在しません。あなたのコードはそれらを同じものとして扱います。 –
あなたは本当に事前に鍵を知らないのですか? –
この場合のあなたのアプローチはOKのようですが、 'allkeys'には配列の代わりにセットを使うことを検討するかもしれません。コード内allkeys' 'の値は' [ "A"、 "B"、 "C"、 "A"、 "C"、 "B"、 "C" ]なってしまいます'、実際には' ["a"、 "b"、 "c"] 'でなければなりません。 – GolfWolf