如何使用具有函数结果值的新属性扩展集合中的每个对象

时间:2016-12-23 17:39:26

标签: javascript angularjs arrays

假设我的应用程序包含对象类型A的数组:

{
    prop1: 11,
    prop2: 2222
}

如何添加数组新属性的每个对象,该属性将包含作为函数结果的值。我知道我可以手动完成,但AngularJS中存在任何聪明的函数:)?

3 个答案:

答案 0 :(得分:2)

您自己添加的答案使用.map().extend()没有任何好处。由于您只添加了一个属性,因此可以执行以下操作:

result.forEach(function (obj) {
    obj.iconname = getGameIconName(obj.gamename) + "_logo.png";
});

答案 1 :(得分:1)

您可以使用Angular forEach功能 - 请参阅下面的演示:

var array = [{
    prop1: 11,
    prop2: 22
},{
    prop1: 1,
    prop2: 2
}];

angular.forEach(array,function(e){
  e.sum = e.prop1 + e.prop2;
});

console.log(array);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

答案 2 :(得分:1)

我是这样做的:

/*
     *private method preparing name of game icon
     */
    var getGameIconName = function(gameName) {

        return gameName.replace(/ /g, '_').toLowerCase();
    };

...
result = result.map(function(obj) {
            return angular.extend(obj, { iconname: getGameIconName(obj.gamename) + "_logo.png" });
        });