如何获取indexOf AngularJS响应对象集合中的对象?

Pet*_*ete 10 javascript arrays angularjs

用例

我有一个从REST请求返回的对象集合.Angular会自动使用a填充每个元素$$hashKey.问题是,当我在没有的情况下搜索该数组中的对象时$$hashKey,它返回-1.这是有道理的.不幸的是,我不知道它的价值$$hashKey.

是否有更有效的方法来搜索AngularJS中从REST请求返回的对象集合中的对象而不剥离$$hashKey属性?

function arrayObjectIndexOf(arr, obj) {
var regex = /,?"\$\$hashKey":".*?",?/;
    var search = JSON.stringify(obj).replace(regex, '');
    console.log(search);
    for ( var i = 0, k = arr.length; i < k; i++ ){
        if (JSON.stringify(arr[i]).replace(regex, '') == search) {
            return i;
        }
    };
    return -1;
};
Run Code Online (Sandbox Code Playgroud)

Ant*_*Chu 21

angular.equals()对没有$前缀属性的对象进行深度比较...

function arrayObjectIndexOf(arr, obj){
    for(var i = 0; i < arr.length; i++){
        if(angular.equals(arr[i], obj)){
            return i;
        }
    };
    return -1;
}
Run Code Online (Sandbox Code Playgroud)


MrW*_*oom 5

由于它是有角度的,为什么不使用过滤:

$ filter('filter')(pages,{id:pageId},true);

其中pages是数组,id是您要匹配的object属性,pageId是您要匹配的值.