朋友。我有以下问题。我有两个可观察的数组。
self.NamesArray= ko.observableArray([{"name: John"}, {"name: Mario"}]);
和
self.ValueArray = ko.observable([]);
我想遍历NamesArray并仅将名称值添加到ValueArray。
因此输出ValueArray最后应包含以下元素:
{John, Mario}
这怎么可能发生?我是JS的新手,我只是在研究Knockout库。任何有关工作示例的帮助将不胜感激。感谢。
答案 0 :(得分:1)
这实际上取决于你背后的意图。
如果您只想做一次,只需遍历第一个数组:
// Load current values of the observables
var n = self.NamesArray(), v = self.ValueArray();
// Push all names from n to v
for (var i = 0; i < n.length; i++) {
v.push( n[i].name );
}
// Update the "values" observable
self.ValueArray(v);
这样做的缺点是,只要“NamesArray”发生变化,“ValueArray”就不会更新。如果您希望“ValueArray”是一个包含可在“NamesArray”中找到的所有名称的数组(并且只有那些!),您可以使用计算的observable:
self.ValueArray = ko.computed(function() {
var n = self.NamesArray(), v = [];
// ...same for loop as above...
return v;
});