List Foreach非重复值淘汰列表

List Foreach非重复值淘汰列表,list,knockout.js,foreach,List,Knockout.js,Foreach,我正在尝试使用viewModel.Names中的LastNames填充无序列表。它可以很好地填充,但我只需要不同的值,而这当前提供了多个相同的姓氏?如何获得不同的值 更新:有一个名字MiddleName LastName 视图模型: <ul data-bind="foreach: viewModel.Names"> <li><a data-bind="text: LastName"></a></li> </ul>

我正在尝试使用viewModel.Names中的LastNames填充无序列表。它可以很好地填充,但我只需要不同的值,而这当前提供了多个相同的姓氏?如何获得不同的值

更新:有一个名字MiddleName LastName

视图模型:

<ul data-bind="foreach: viewModel.Names">
    <li><a data-bind="text: LastName"></a></li>
</ul>
<uldata-bind="foreach: LastNames">
    <li><input type="checkbox"/><a data-bind="text: []"></a></li>
</ul>
以下是我的新视图模型:

<ul data-bind="foreach: viewModel.Names">
    <li><a data-bind="text: LastName"></a></li>
</ul>
<uldata-bind="foreach: LastNames">
    <li><input type="checkbox"/><a data-bind="text: []"></a></li>
</ul>


  • 如果我理解正确,您需要创建一个计算数组,如下所示:

    // this beeing your model
    this.distinctNames = ko.computed(function(){
       var distinct = [];
       for (var i = 0; i < this.Names.length;i++) {
           if (distinct.indexOf(this.Names[i]) == -1)
              distinct.push({LastName:this.Names[i]});
       }
       return distinct;
    }, this);
    

    编辑

    您以错误的方式访问每个人的数据。您应该使用引用当前foreach值的
    $data

    <ul data-bind="foreach: LastNames">
        <li><input type="checkbox"/><a data-bind="text: $data"></a></li>
    </ul>