私は短縮形オブジェクトを書くことができましたが、その後、他の配列やオブジェクトのインデントをたくさん持っていきます。これは、質問された最後のものに基づいて、多数の新しい一連の質問がある質問フォーム用です。このコードの設計方法に関する提案はありますか?このようなJavaScriptで多くの分岐配列を作成する最良の方法
答えて
使用ツリー構造:あなたはサブツリーを再利用する場合は
var
n0 = {/*data*/},
n1 = {/*data*/},
...
n3234 = {/*data*/}
n0.children = [n1, n2, n3]
n1.children = [n11, n12, n13]
...
n3234.children = []
は、ちょうどこのを行います。このような
n2321 = n1234,
避けサイクル:少ないタイピングで
n2222 = n2,
...
n1111.children = [n1]
あなたの例について私が理解していないことは、まだ定義されていない子をリストアップすることです。 – VagueExplanation
@VagueExplanationが修正されました、ごめんなさい;-) –
その他のソリューション:
var d = {
'': {/*data*/},
'1': {/*data*/},
'1.1': {/*data*/},
..
'3.2.3.4': {/*data*/}
}
for(var k in d){//init child array
d[k].children = []
}
for(var k in d){//build tree structure
if(k != ''){//skip root
var a = k.split('.')//hierarchy array
var i = a.pop()//remove my level
var parent = a.join('.')
if(parent in d){//parent exists
d[parent].children.push({i: +i, k: k})//to prevent holes
}
else {
console.log('pending subtree: ' + k)
}
}
}
for(var k in d){//transform child array
d[k].children = d[k].children
.sort(function(a, b){return a.i - b.i})//es6 (a, b)=>a.i-b.i
.map(function(x){return d[x.k]})//es6 x=>d[x.k]
}
//now the tree is in d['']
ホールの予防にエラーがあります。 (未定義はオブジェクトではありません( 'd [parent] .children.push'を評価する))。何をそこに置くべきですか? – VagueExplanation
@VagueExplanation子配列の初期化が追加され、結合が修正されました。テストされたコードではないので、自分で完成させる必要があります... –
- 1. flash as3多次元配列を作成する最良の方法
- 2. 配列を作成する最良の方法
- 3. 並列分岐は、コードを共有する同様のプロジェクトを管理する最良の方法ですか?
- 4. javascript:クラスを作成する最良の方法
- 5. ruby '最良の方法' 2次元配列を生成する
- 6. Microsoftボットフレームワークで分岐ダイアログを作成する方法
- 7. C++で多くの合成オブジェクトを定義する最も良い方法は?
- 8. 分岐する2つの分岐を持つときに1つの構造コードを作成する方法
- 9. Pythonで分岐ダイアグラムを作成する
- 10. 多くの受信パケットを処理する最良の方法
- 11. Javascript配列のスジを数える最も良い方法は何ですか?
- 12. jQueryで多次元配列を作成する方法
- 13. Javaスクリプトで多次元配列を作成する方法は?
- 14. 多次元配列の値をJavaScriptのテーブルに表示する最も良い方法
- 15. javascriptで位置の配列を作成する方法は?
- 16. Javascriptのリテラル表記でアソシエイティブ配列を作成する方法
- 17. Jinja2:多次元のjavascript配列を作成するには?
- 18. Javascriptで多次元配列を作成するには?
- 19. javascriptで多次元配列を作成する
- 20. 多くのWebサービスを呼び出す最良の方法は?
- 21. SQL最初の列の増分を作成する方法
- 22. JavaScriptの配列の配列内の特定の列をフィルタリングする最も良い方法
- 23. TFSでのカスケード分岐または:ブランチへの分岐方法
- 24. 回転キューブを配列で表現する最良の方法
- 25. スカラーで配列をループする最良の方法
- 26. JavaScriptでオブジェクトを最小化してオブジェクトの配列から配列を作成する方法
- 27. Angularの多くのオプションのパラメータを扱う最良の方法
- 28. 単一のページでナビゲーションを作成する最良の方法
- 29. Javascript:値の配列を含むオブジェクトのオブジェクトの配列 - 最もパフォーマンスの良い方法ですか?
- 30. Androidの多くのボタンを使ってレイアウトを作成する最も良い方法
重要なのは、データのレイアウト方法です。すべての質問が以前の回答に基づいてユニークなものであれば、最初に提案したものを超えてあまり選択肢がありません。いくつかの質問が同じパスにつながる場合は、有向グラフなどのより複雑なデータ構造が必要になります。しかし、Stack Overflowは、データ構造をブレーンストーミングするためのものではなく、厳密に定義された問題を解決するためのものです。有向グラフとグラフの構築を見てください。 [ここにはダイアログツリーの記事があります](http://gamedev.stackexchange.com/questions/40519/how-do-dialog-trees-work)これは基本的にあなたが作っているものです。 –