2

繰り返しますが、私の側では脳のおならのようです。配列内のすべてのオブジェクトをループし、それらのオブジェクトの監視可能なプロパティを変更して、サンプル操作を試みます。

var sss = vm.tripData();
                for (var sh2 in sss) {
                    sh2.isVisible(false);
                }

sssオブジェクトの配列が含まれています。VS2012 ローカルで見ることができます。これが必要です。sss列挙しようとしていることを確認するためだけに宣言しました。ループ内に最初sh2に文字列が含まれているのは"0"なぜですか? 私はそれがいくつかのjavascriptのものだと思います(私はc#のバックグラウンドから来ました).. sh2が私のオブジェクトになると思います。

編集:

これは私がデバッガで見るものです:

sss オブジェクト

sh2 文字列

4

1 に答える 1

2

したがって、問題は、 for...in がオブジェクトの値ではなく、オブジェクトのプロパティへのキーをループすることです。

したがって、次のようなオブジェクトがある場合

var x = {
    a: "A",
    b: "B"
}

for...in'a'と吐き出し'b'ます。配列はオブジェクトでfor...inあるため、配列を使用すると非常によく似たものが得られます。配列の各インデックスの文字列です。したがって、 with var a= [1, 2, 3], for...inofa'0', '1', '2'ではなく , になり1, 2, 3ます。

代わりに、以下のような構成を使用して、必要なことを行います。

var sss = vm.tripData();
for (var i = 0; i < sss.length; i++) {
    var sh2 = sss[i];
    sh2.isVisible(false);
}
于 2013-04-23T19:16:08.717 に答える