我有一个像这样的observableArray:
self.DisplayMessageCollection = ko.observableArray();
我正在收集一个集合并将项目推送到DisplayMessageCollection
,如下所示:
self.DisplayMessageCollection.push({
messageid: msgid,
loader: 'block',
uploadopacity: 'uploadopacity',
sentstatus: 'Wait',
Chattype: self.ToChatType()
});
我需要将所有messageid
字段值作为该数组中逗号分隔的字符串。
我知道我可以循环所有项目并获得messageid
值。但我想知道我们是否可以查询observableArray
,即以某种方式执行单个查询以将所有字段值作为逗号分隔的字符串进行查询?
答案 0 :(得分:2)
您可以使用底层数组中的内置map
function,然后您可以使用join
function获取逗号分隔的字符串:
self.DisplayMessageCollection().map(function(i) { return i.messageid }).join(",")
如果您需要多次使用此逻辑,则可以为可观察数组创建helper function。
答案 1 :(得分:0)
您可以使用KO utils映射数组并加入值。像这样:
var messages = ko.utils.arrayMap(self.DisplayMessageCollection(), function(item) {
return item.messageid;
}).join(',');
然而,这几乎与Nemesv的解决方案相同。