枚举铸造中的observableArray枚举为字符串?

时间:2013-04-23 18:42:23

标签: javascript knockout.js

再一次,看起来像是我身边的大脑放屁。尝试通过循环遍历数组中的所有对象并更改这些对象上的observable属性来进行示例操作:

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

sss包含对象数组,我可以在VS2012本地人看到它 - 这就是我需要的。我宣布sss只是为了看看我想要枚举的内容。内部循环首先sh2包含字符串"0"为什么?我想这是一些javascript的事情(我来自c#background)..我希望sh2成为我的对象。

编辑:

这是我在调试器中看到的:

sss object

sh2 string

1 个答案:

答案 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