在淘汰赛中显示分组表

时间:2014-11-05 20:17:31

标签: 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: 'Paul', city: 'Warsaw' }
    ]);

使用<!-- ko foreach: myArray -->我可以在视图中显示数组

但是如何通过使用淘汰赛

按照下面的城市分组数组来准备表格
CITY        NAME

[Warsaw]    [Luk, Peter, Paul]

[London]    [Mark, Paul]

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情(未经测试):

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;
});

然后只是一个类似的<!-- ko foreach: groupedCities -->来显示它们。