将方法与JSON对象列表中的每个项相关联

时间:2014-10-31 10:30:11

标签: javascript ajax json

我的代码通过AJAX将JS对象列表作为JSON返回。此列表使用JSON.parse进行解析并保存在变量中。

var myListOfObjects = [ 
    {"id":1,"Name":"John","xcoord":23.7,"ycoord":37.2},
    {"id":2,"Name":"Mary","xcoord":17.7,"ycoord":54.6},
    ....
   ];

将同一方法与这些对象中的每一个相关联的最佳方法是什么,以便在迭代它们时可以调用它:

myListOfObjects.forEach( function(person){
    console.log( person.getDistance() );
    } );

我可以在每次迭代时定义参数,但这看起来效率不高,并且不容易用d3js实现(它需要在将它绑定到DOM选择之前首次重复列表)。

感谢。

2 个答案:

答案 0 :(得分:1)

写一个getDistance(person);所以不要把它放在人物中,而是放在集中的地方

答案 1 :(得分:0)

正如@dfsq在评论中所建议的那样,可能是装饰我的JSON对象:

function DecoratedPerson( ajaxData ){
    this.person = ajaxData;
}

DecoratedPerson.prototype.getDistance = function(){
    return this.person.xcoord*this.person.xcoord + this.person.ycoord*this.person.ycoord;
    };

然后在循环内装饰ajax对象。

myListOfObjects.forEach( function(person){
    var myPerson = DecoratedPerson( person );
    console.log( myPerson.getDistance() );
    } );

最终,可以通过指定reviver参数在JSON.parse()步骤中完成装饰。