再一次,看起来像是我身边的大脑放屁。尝试通过循环遍历数组中的所有对象并更改这些对象上的observable属性来进行示例操作:
var sss = vm.tripData();
for (var sh2 in sss) {
sh2.isVisible(false);
}
sss
包含对象数组,我可以在VS2012本地人看到它 - 这就是我需要的。我宣布sss
只是为了看看我想要枚举的内容。内部循环首先sh2
包含字符串"0"
为什么?我想这是一些javascript的事情(我来自c#background)..我希望sh2成为我的对象。
编辑:
这是我在调试器中看到的:
答案 0 :(得分:2)
因此,问题在于... for循环中的对象属性的键,而不是对象的值。
所以如果你有像
这样的对象var x = {
a: "A",
b: "B"
}
for...in
会吐出'a'
和'b'
。由于数组是对象,带有数组的for...in
将为您提供非常相似的东西:数组中每个索引的字符串。因此,对于var a= [1, 2, 3]
,for...in
的{{1}}将导致a
,而不是'0', '1', '2'
。
使用类似下面的结构来做你想做的事情。
1, 2, 3