Angularjs通过过滤器获得indexOf

时间:2016-05-18 05:51:10

标签: javascript arrays angularjs

我有后端API返回的一组JSON数据,我需要遍历现有数组并获取index splice,因此我正在使用{{1} }方法结合角度过滤函数。

我能够从现有数组中过滤掉数据,但是我无法获取数组的索引,它返回indexOf

这是怎么做的。

JS

-1

4 个答案:

答案 0 :(得分:3)

indexOf返回一个数组,您需要从中获取第一个元素,然后使用var index = $scope.Tablelist.indexOf( $filter('filter')($scope.Tablelist,{id: $scope.data.id},true)[0] ); 进行搜索:

Tablelist

但是,我只会使用https://jsfiddle.net/br6c5way/。它会快得多,因为它不会比var index = $scope.Tablelist.findIndex(function(item) { return item.id === $scope.data.id; }); 更多地迭代它。

for

如果您想要更好的浏览器兼容性,请定期var index = -1; for (var i = 0; i < $scope.Tablelist.length; i++) if ($scope.Tablelist[i].id === $scope.data.id) { index = i; break; } } 循环:

{{1}}

答案 1 :(得分:2)

试试这个:

var object = $filter('filter')($scope.Tablelist, function (d) {
   return d.id === $scope.data.id;
})[0]
console.log(object);
console.log($scope.Tablelist.indexOf(object);

答案 2 :(得分:1)

$filter('filter')($scope.Tablelist,{id: $scope.data.id},true) 

返回一个长度为1的数组,而不是项目本身。

$filter('filter')($scope.Tablelist,{id: $scope.data.id},true)[0] 

可以做到这一点

答案 3 :(得分:1)

$filter返回一个数组,您试图在Tablelist中找到该数组的索引,返回-1,尝试:

var index =
  $scope.Tablelist.indexOf($filter('filter')($scope.Tablelist,{id: $scope.data.id},true)[0]));