私は階層構造に以下のようなノードが生じています:ネストされた配列の親レコードと子レコードを比較するには?
Node - 1
Node-1-1
Node-1-1-1
は今、私は接続が親と子ノード間で定義するかどうかを確認したいです。親と子の間
接続ノード1とノード1-1間などについては、以下のように定義される:
"connections": {
"joins": [
{
"parent": "Node-1",
"child": "Node-1-1"
}
]
}
が存在する場合には少なくとも1つの接続(1レコードが接続のプロパティを結合)親ノードと子ノードの間にある場合は、それ以外の場合はユーザーに警告を表示し、ノード間の接続が発生した直後に反復関数から戻したいと思う。
反復関数からの応答が得られない限り(反復関数は完了していない)、私は自分のIDをインクリメントしたくないので、コールバックを反復関数に渡して応答を返したいのです。
ノード1-1とノード1-1-1との間に接続がないので、接続の結合プロパティにレコードがないため、ユーザーに警告を表示したいと思います。
しかし、問題は、すべての親ノードと子ノードを比較する方法と、このコールバックを再帰的構造で管理する方法がわかりません。
var records = [
{
"name": "Node-1",
"nodes": [
{
"name": "Node-1-1",
"isParent": false,
"nodes": [
{
"name": "Node-1-1-1",
"isParent": false,
"nodes": [
],
"connections": {
"joins": []
}
}
],
"connections": {
"joins": [
{
"parent": "Node-1",
"child": "Node-1-1"
}
]
}
}
],
"isParent": true
}
];
function CheckConnections(){
var id=0;
iterate(records,
function (valid) {
if(valid)
{
id = id + 1;
console.log(id);
}
else
alert("please define connections")
}
);
}
function iterate(nodes,callback)
{
var connectionDefine = false;
callback(false);
}
<input type="button" value="Check Connections" onclick="CheckConnections()">
、あなたは 'nodes'配列が親子接続の形で、' connections'配列にも存在していることを確認してすべてのオブジェクトを作るのチェックをしたいです? ノードに複数の子があった場合の構造はどのように見えますか? 'CheckConnections()'がtrue(エラーなし)を返す場合、構造体はどのように見えるでしょうか? – mTv
@mTv:各親には子が1つしかなく、エラーがなければ単純にコールバックを返します(true)。それ以外の場合はコールバック(false) –
空の 'joins'プロパティを持つノードがあるかどうか確認する必要がありますかまたは空ではないが何らかの形で無効にすることはできますか? – vassiliskrikonis