javascript - 如何在二维数组上应用 ko.utils.arrayGetDistinctValues

标签 javascript arrays knockout.js

我有一个二维的 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/

相关文章:

javascript - 单击时隐藏/显示子元素

javascript - 如何循环使用 loadGeoJson 加载的 Google map 功能

javascript - jQuery:从对象数据创建数组

knockout.js - ko.utils.unwrapObservable和ko.toJS有什么区别?

javascript - 在构建 knockout js 绑定(bind)时隐藏屏幕的最佳方法是什么?

javascript - Knockout.JS - 单击 div 外部时运行函数

javascript - TypeError 模拟快速响应对象

javascript - Owl Carousel 固定高度?

PHP : echo Multidimensional Array

javascript - 在 JavaScript 中按对象创建数组(反之亦然)?