如何通过id获取对象参数?

时间:2016-12-19 20:28:49

标签: javascript angularjs arrays

我需要使用Id来检测数组中的对象。

我的第一个数组看起来像这样:

{ [id: 9, name: 'abc'], [id: 2, name 'def'], [id: 40, name: 'gh'] } (Id & name)

而其他数组是:

{ [class: 'physics', Tid: 9], [class: 'computer science', Tid: 9], [class: 'Biology', Tid: 40] }.

我需要将第一个数组中的参数“name”与其“class”匹配(例如,"physics"Tid=9相关联"abc""Biology"Tid=40 "gh"相关。

如何在不改变数据传输方式的情况下优雅地执行此操作? (它来自使用JSON中的ASP.NET Web服务的数据库)

2 个答案:

答案 0 :(得分:0)

你可以使用$ http.get(),它有成功和错误回调函数,它返回一个promise对象。使用此功能,您可以设置一个条件来映射ID并获得所需的结果。

像这样。

var myObject1 = {};
var myArray1 = [];

var myObject2 = {};
var myArray2 = [];

$http.get('json-file')
        .success(function(data)) {
            myObject1.myArray1 = data;
        }

$http.get('json-file')
        .success(function(data)) {
            myObject2.myArray2 = data;
        }

/* inside a loop if required */
if (myObject1.myArray1[index].id == myObject2.myArray2[index].Tid) {
    /* perform logic */
}

此代码将出现在服务或控制器中。

Haven没有对它进行测试,因此不确定语法,但承诺对象是可行的方法。

希望这有帮助。

答案 1 :(得分:0)

这将返回一个数组数组。数组中的每个数组都包含两个由id === Tid匹配的对象。据我所知,你想要的是什么。

(注意,我认为你提供了破碎的样本数组,我调整并加扰了数字,这样你就可以看到它更清晰了)。

var arr1 = [ {id: 9, name: 'abc'}, {id: 2, name: 'def'}, {id: 40, name: 'gh'} ];
var arr2 = [ {class: 'physics', Tid: 2}, {class: 'computer science', Tid: 40}, {class: 'Biology', Tid: 9} ];

var arrFinal = arr1.map ( function ( d ) {
    var matched = arr2.find ( function ( obj ) {
       return obj.Tid === d.id;
    } );

    return [ d, matched ];
} );

如果你迭代arrFinal,你会看到它包含匹配的对象。