角度搜索对象数组

时间:2017-06-16 09:10:40

标签: javascript angularjs arrays

在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"

的对象的索引

3 个答案:

答案 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的直接使用。

&#13;
&#13;
var arrayiwanttosearch = [
  {
    name : "nottest"
  },
  {
    name : "test"
  }
];

var index = arrayiwanttosearch.findIndex(obj => obj.name === "test");

console.log(index);
&#13;
&#13;
&#13;