Javascript 在淘汰中显示分组表

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

下面是我使用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' }
    ]);
使用
我可以在视图中显示阵列

但我如何通过使用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;
});