0

動的に生成された配列のプロパティをカウントしようとしています。配列プログラムは、次のようにオブジェクト内に作成されます。

state_list.push({name: state, undergrad: 0, grad: 0, total: 0, programs: []});

後者は次のように入力されます。

n = findWithAttr(state_list, 'name', state);
//n = the index of property "name" with value of "state" in state_list
if(!(program in state_list[n]["programs"])) {           
state_list[n]["programs"][program] = 1;
} else {
state_list[n]["programs"][program]++;
}

次に、配列に配置されたプログラムの数を合計する必要があり、それを行うことを望んでいました。

programs = state.programs;
console.log(programs.length);

しかし、これは 0 を返します。

ログ(プログラム)の場合の配列は次のとおりです。

Array[0]
History, MA: 3
Info Assurance & Security, MS: 1
International Literacy, MED: 1
length: 0
__proto__: Array[0]
main.js:237

It seems like it is placing all the programs in the array as one string... or something. I would love to have them indexed and have the ability to iterate over them. Any suggestions?

4

2 に答える 2

1
programs = state.programs;
console.log(programs.length);

state が state_list 配列内のオブジェクトを参照している場合、配列の長さを正しく返します。

私の推測ではprogram、あなたのコードでは は数値ではなく、プログラムは配列インデックスではなくオブジェクト プロパティとして挿入されています。長さは、実際にプログラム[]の形式で追加している場合にのみ増加します。programが数値以外の文字列の場合、インデックスではなく配列のプロパティを編集することになり、これらによって長さが増加することはありません。

于 2013-03-27T20:08:46.680 に答える