如何在非关联数组(非键值对数组)上使用ng-repeat过滤器

时间:2015-01-17 09:45:32

标签: javascript arrays json angularjs

我一直在努力尝试找到一个如何过滤简单数组的特定列索引的示例。没有使用我自己的代码使其复杂化,我试图简单地修改在此处找到的AngularJS站点上找到的代码 https://docs.angularjs.org/api/ng/filter/filter如何知道数组[0]将始终是名称,我将如何仅过滤名称列。

我正在试图弄清楚如何写作:

Filter only on Name <input ng-model="search.name"><br>
Filter only on Phone <input ng-model="search.phone"><br>
<table id="searchObjResults">
  <tr><th>Name</th><th>Phone</th></tr>
  <tr ng-repeat="friendObj in friends | filter:search:strict">
    <td>{{friendObj.name}}</td>
    <td>{{friendObj.phone}}</td>
  </tr>
</table>

假设:

<div ng-init="friends = [['John', '555-1276'],
     ['Mary', '800-BIG-MARY'],
     ['Mike', '555-4321'],
     ['Adam', '555-5678'],
     ['Julie', '555-8765'],
     ['Juliette', '555-5678']]">
</div>

1 个答案:

答案 0 :(得分:1)

您可以使用过滤功能,例如:

Plunker

$scope.filterFn = function(val) {
    return !$scope.search || (val[0].toLowerCase().indexOf($scope.search.toLowerCase()) > -1);
  }

或者将您的数组转换为集合:

arr.map(function(p){
    return {name: p[0], phone: p[1]}
 });

过滤方式与原始示例相同。