我有后端API返回的一组JSON数据,我需要遍历现有数组并获取index
splice
,因此我正在使用{{1} }方法结合角度过滤函数。
我能够从现有数组中过滤掉数据,但是我无法获取数组的索引,它返回indexOf
。
这是怎么做的。
JS
-1
答案 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]));