在Angular中搜索对象数组的特定参数的最佳方法是什么?
我从Angular foreach填充我的数组:
$scope.arrayiwanttosearch = [];
angular.forEach(data, function(value, key) {
try{
var arrstring = new Array();
arrstring = value.img.split(',');
obj.name = value.name;
obj.selectedcolor = arrstring[0];
obj.colors = value.img;
obj.ischanging = false;
$scope.arrayiwanttosearch.push(obj);
}
catch(ex){
}
})
我只能使用array.index,当它的数组没有对象时,有没有办法在不使用for循环的情况下执行此操作?我试图找到具有obj.name ==" test"
的对象的索引答案 0 :(得分:0)
您可以使用原生javascript“filter”来恢复数组中所有匹配的成员,或者使用“find”来回收它找到的第一个成员,或者{{3 }}“;
// This finds the first matching array element with an object property === 2
$scope.arr = [{a:2,b:3}, {a:2,b:4}];
$scope.result = $scope.arr.find((item) => item.a === 2);
// The filter does the same but brings back all matching elements;
$scope.arr = [{a:2,b:3}, {a:2,b:4}];
$scope.result = $scope.arr.filter((item) => item.a === 2);
// The index result;
$scope.arr = [{a:2,b:3}, {a:2,b:4}];
$scope.result = $scope.arr.findIndex((item) => item.a === 2);
ES6 JS表示法,但很容易适应ES5 JS。
答案 1 :(得分:0)
您可以使用Array.prototype
获取对象数组中的索引值。
var index = $scope.arrayiwanttosearch.indexOfname("test");
Array.prototype.indexOfname = function(name) {
for (var i = 0; i < this.length; i++)
if (this[i].name === name)
return i;
return -1;
}
答案 2 :(得分:0)
我试图找到具有obj.name ==的对象的索引 &#34;测试&#34;
这是对findIndex的直接使用。
var arrayiwanttosearch = [
{
name : "nottest"
},
{
name : "test"
}
];
var index = arrayiwanttosearch.findIndex(obj => obj.name === "test");
console.log(index);
&#13;