私は JavaScript リテラルを持っています:
var members = {
"mother": {
"name" : "Mary",
"age" : "48",
"connection": {
"brother" : "sun"
}
},
"father": {
"name" : "Bill",
"age" : "50"
},
"brother": {
"name" : "Alex",
"age" : "28"
}
}
上記のリテラルから接続を読み取る関数があります。次のようになります。
function findRelations(members){
var wires = new Array();
var count = 0;
for (n = 0; n < members.length; n++){
alert(members.length); // this alert is undefined
if (members[n].connection){
for (i = 0; i < members[n].connection[0].length; i++){
var mw = new Array();
var destination = 0;
for (m = 0; m < members.length; m ++){
if (members[m] == members[n].connection[0]){
destination = m;
mw = [n, destination];
wires [count] = mw;
count++;
}
}
}
}
}
return wires;
}
ただし、この関数を実行しても何も得られません。そして、関数内に配置された最初のアラートは、「未定義」をまったく示しています。
findRelations(members);
alert("Found " + wires.length + " connections");
それはJavaScriptリテラルのせいだと思います。関数を変更する方法、またはリテラルを JSON 配列に変更して機能させる方法を提案できますか?! 最後に、「m」と「n」の値を数値として取得します。