以下は、少なくとも1つのオカレンスを見つける必要があるオブジェクトです。isSelected: true
。最初のキーの出現を見つける効率的な方法:オブジェクト内の値
[
{
"isSelected": true,
"child": [
{
"isSelected": true,
"child": [
{
"isSelected": true,
"child": [
{
"isSelected": true
}
]
}
]
}
]
}
]
上記目的は、その中にN要素を有することができ、各要素はそうでN子供とを有することができます。すべての要素に対して、値が「true/false」のisSelected
キーがあります。
私は、真値を持つisSelected
キーが少なくとも1つ見つかった場合にtrueを返す関数をJavaScriptで作成しようとしています。
JSON.stringify()
を使用して機能の下に書いて、文字列を検索「isSelected:真」の文字列は、それが
function hasIsSelected(data){
return (JSON.stringify(data)).search('"isSelected":true') > -1 ? true: false
}
わからないJSON.stringify()
場合に大きなオブジェクトのために効率的になります。
サードパーティのライブラリを使用せずにJavaScriptで解決策を見つけようとしています。
私は最悪のケースでは再帰が遅くなり、スタックメモリの多くを占めると思いますか? –
最初に関数を修正しましたが、場合によっては正しい結果が返されませんでした。すべての「パス」を参照する必要がないため、大きなオブジェクトではこの方法が高速になりません。最初のisSelectedフィールドが値 "true"で見つかると、それは終了します。 JSON.stringifyを使用すると、関数はすべてのオブジェクトを参照して文字列に変換し、その大きな文字列を検索する必要があります。 –
私の回答を編集して、違いを見るための簡単なベンチマークを追加してください –