我有一个二维的 ko.observableArray,即“id”和“name”。 Id 始终是不同的,但 name 可以保存相同的值。
self.myArray = ko.observableArray( [
{ "id": "1", "name": "Barbara" },
{ "id": "2", "name": "Edwin" },
{ "id": "3", "name": "Barbara" }
] );
但是我想过滤数组,以便我的结果仅包含第一次出现的“name”。
我想要的结果是:
self. myFilteredArray = [
{ "id": "1", "name": "Barbara" },
{ "id": "2", "name": "Edwin" }
];
我一直在尝试使用 ko.utils.arrayGetDistinctValues() 来解决这个问题,但如何才能仅在一个选定的维度上利用它?
最佳答案
您可以为此使用计算:
viewModel.myFilteredArray = ko.computed(function() {
var rv = [], names = [];
for(var i=0; i<this.myArray().length; i++) {
if(names.indexOf(this.myArray()[i].name) === -1) {
rv.push(this.myArray()[i]);
names.push(this.myArray()[i].name);
}
}
return rv;
}, viewModel);
关于javascript - 如何在二维数组上应用 ko.utils.arrayGetDistinctValues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21466054/