0
オンラインAPIから大きな入れ子になったJSON応答を取得しています。私はそれから3つの値しか必要としませんが、かなり入れ子になっています。私はそれらのフィールドのそれぞれへの正確なパスを知っています。JSONオブジェクトのパスから値を取得する
obj = {
"result": {
"data": {
"point1": "x",
"value": 2
},
"foo": {
"bar": 7
}
}
}
を私がしたいパスlet p = 'result.data.value'
はlet x = getElement(obj, p);
を行うことができるし、削除されたすべてのエラーをきれいに保つためにチェックする(私は簡単な関数を書いたのx 2
も持っている:例えば、与えられました):
const getJSONElement = (data, path) => {
for(let p of path.split('.')) {
data = data[p];
}
return data;
};
これは機能しますが、私は何か不足している、または効率的でないように感じます。おそらくArray.reduce
を使って要素に到達するより良い方法がありますか?
ライブラリをインポートするオプションがある場合は
またはhttps://stackoverflow.com/questions/8817394/javascript-get-deep-value-from-object-by-passing-path -to-it-as-stringまたはhttps://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-keyまたはhttps://stackoverflow.com/questions/8051975/access-object -child-properties-a-dot-notation-stringを使用するか、https://stackoverflow.com/questions/6393943/convert-javascript-string-in-dot-notation-into-an-object-reference – meagar
ありがとう@Meagar 、私は同様の質問を探してみましたが、私は十分にうまくいっていないと思います。いずれにせよ、私は 'reduce'を使って答えを得ました。 –