Javascript 在淘汰中显示分组表
下面是我使用knockout.js的视图模型Javascript 在淘汰中显示分组表,javascript,arrays,knockout.js,Javascript,Arrays,Knockout.js,下面是我使用knockout.js的视图模型 viewModel.myArray = ko.observableArray([ { name: 'Luk', city: 'Warsaw' }, { name: 'Mark', city: 'London' }, { name: 'Tom', city: 'London' }, { name: 'Peter', city: 'Warsaw' }, { name: 'P
viewModel.myArray = ko.observableArray([
{ name: 'Luk', city: 'Warsaw' },
{ name: 'Mark', city: 'London' },
{ name: 'Tom', city: 'London' },
{ name: 'Peter', city: 'Warsaw' },
{ name: 'Paul', city: 'Warsaw' }
]);
使用
我可以在视图中显示阵列
但我如何通过使用knockout按城市分组数组来准备表呢
CITY NAME
[Warsaw] [Luk, Peter, Paul]
[London] [Mark, Paul]
谢谢您的回答。您可以尝试以下类似的方法(未经测试):
viewModel.groupedCities=ko.computed({
读:函数(){
var输出={};
var arr=viewModel.myArray();
对于(变量i=0;i
然后用一个类似的
来显示它们。谢谢它的帮助。但是我必须是output[item.city()]而不是output[item.city]当然。我之所以这样做是因为在你的例子中属性是不可观察的。
viewModel.groupedCities = ko.computed({
read: function() {
var output = {};
var arr = viewModel.myArray();
for(var i = 0; i < arr.length; i++) {
var item = arr[i];
output[item.city] = output[item.city] || [];
output[item.city].push(item.name);
}
var keys = Object.keys(output);
var result = [];
for(var i = 0; i < keys.length; i++) {
result.push({ city: keys[i], names: output[keys[i]]});
}
return result;
});