我有一个包含值列表的数组。
[Object { id="5", country="UAE"}, Object { id="4", country="India"}]
我想根据id中的值获取数组项的索引。如何在angularJS控制器中获取值为id = 4的数组项的索引位置?
答案 0 :(得分:23)
angularjs方式(使用$ filter)将是这样的
app.controller('MainCtrl', ['$scope', '$filter', function($scope, $filter) {
//array
var items = [{ id: "5", country: "UAE" }, { id: "4", country: "India" }];
//search value
var id2Search = "4";
//filter the array
var foundItem = $filter('filter')(items, { id: id2Search }, true)[0];
//get the index
var index = items.indexOf(foundItem );
}]);
答案 1 :(得分:10)
这不是angularjs特定的问题,而是普通的javascript。 只需循环并返回索引
var list = [{ id="5", country="UAE"}, { id="4", country="India"}];
for (var i = 0; i < list.length ; i++) {
if (list[i][id] === 4) {
return i;
}
}
然后,您可以通过在接受值和属性名称
的数组上使其成为函数来使其成为通用的Array.prototype.getIndexOfObject = function(prop, value){
for (var i = 0; i < this.length ; i++) {
if (this[i][prop] === value) {
return i;
}
}
}
答案 2 :(得分:3)
您可以使用map()函数迭代数组中的每个对象并检查任何所需的属性。例如,如果您有一个对象数组
$scope.items =
[
{'id':'1','name':'item1'},
{'id':'2','name':'item2'}
];
获取数组中第二个对象的索引使用
var index = $scope.items.map(function (item) {
return item.id;
}).indexOf(2);
返回id属性中包含值2的对象的索引。
答案 3 :(得分:1)
将要从数组中删除的id传递给控制器中的给定函数(函数可以在同一控制器中,但希望将其保留在服务中)。
function removeInfo(id) {
let item = Object .filter(function(item) {
return Object.id === id;
})[0];
let index = Object.indexOf(item);
}