AngularJS ForEach将新项目推送到对象中

Rav*_*Ram 7 javascript angularjs

我有一个JavaScript对象,其中包含零售商列表

var listRetailers = [
{"url":"http://www.fake1.com", "img":"images/1logo.jpg"},
 {"url":"http://www.fake2.com", "img":"images/2logo.gif"},
 {"url":"http://www.fake3.com", "img":"images/3logo.gif"},
 ]
Run Code Online (Sandbox Code Playgroud)

我想推出一个新的关键:每个项目的价值:

object.push("storeNumber": "1");
Run Code Online (Sandbox Code Playgroud)

所以更新的JavaScript对象将是

var listRetailers = [
{"url":"http://www.fake1.com", "img":"images/1logo.jpg", "storeNumber":"1"},
 {"url":"http://www.fake2.com", "img":"images/2logo.gif", "storeNumber":"1"},
 {"url":"http://www.fake3.com", "img":"images/3logo.gif", "storeNumber":"1"},
 ]
Run Code Online (Sandbox Code Playgroud)

在我的角度控制器中,我有

$scope.retailers = listRetailers ;

angular.forEach($scope.retailers, function(obj){
          obj.push("storeNumber": "1");
        });
Run Code Online (Sandbox Code Playgroud)

错误说明:对象#没有方法'推送'

我在这里错过了什么?

Jos*_*osh 22

那是因为obj你的零售商对象是指并且不是数组.如果要向其添加属性,可以使用括号[]表示法或使用点.表示法来定义它们.

angular.forEach($scope.retailers, function(obj){

   //Using bracket notation
   obj["storeNumber"] = 1;

   //Using dot notation
   obj.storeNumber = 1;

});
Run Code Online (Sandbox Code Playgroud)

  • @ MatthewT.Baker - 绝对.大多数情况下,您应该使用点符号作为clairty,但括号表示法允许您使用点表示法执行简单无法实现的操作.例如,您可以使用计算属性名称`obj ["base"+ num]`,或者您可能需要一个标识符,该标识符具有使用点表示法不具有有效语法的字符.`obj ["我有空格"]` (2认同)