【问题标题】:Adding same property:value pair to multiple objects in array将相同的属性:值对添加到数组中的多个对象
【发布时间】:2016-06-17 05:42:23
【问题描述】:

我有两个数组,它们的结构几乎相同,除了一个在每个对象上都有一个 property:value 对,而另一个没有。

纽卡斯尔阵列(with clubCode 属性)

 [
            {"clubCode": "newcastle-united",
                "firstName": "Tim",
                "lastName": "Krul",
                "position": "gk"},

            {"clubCode": "newcastle-united",
                "firstName": "Rob",
                "lastName": "Elliot",
                "position": "gk"}
]

阿森纳阵列(没有clubCode属性)

 [
            {"firstName": "Petr",
                "lastName": "Cech",
                "position": "gk",

            {"firstName": "David",
                "lastName": "Ospina",
                "position": "gk"}
] 

是否可以将push() clubCode 属性添加到阿森纳数组中的每个 对象,这样我就不必手动将其添加到每个对象中?

...所以每个对象都以"clubCode": "arsenal"开头。

或者如果有任何其他解决方案我很想听。

任何帮助将不胜感激。提前致谢。

【问题讨论】:

  • 您要在哪个基础上添加它以及您的最终数据结构是什么样的?
  • 我正在运行 AngularJS,并且我正在通过调用一个 JSON 文件来访问 $scope.arsenalSquad 数组,这是同一个数组。数组返回为arsenalSquad.data。在我的控制器中,我想编写必要的代码来返回该数组中的每个对象,其属性为clubCode,对应的值为arsenal

标签: javascript arrays angularjs object push


【解决方案1】:

您可以在数据结构上使用Array.prototype.forEach

var x =  [
            {"firstName": "Petr",
                "lastName": "Cech",
                "position": "gk",
            },
            {"firstName": "David",
                "lastName": "Ospina",
                "position": "gk"}
         ]; 

x.forEach(function(e){e.clubCode='arsenal';})

【讨论】:

    【解决方案2】:

    尝试在这种情况下使用Array.prototype.map()

    arsenalArray = arsenalArray.map(function(itm){
      return (itm.clubCode = "arsenal", itm);
    });
    

    DEMO

    【讨论】:

    • 我试过这个,但没有用。我的问题是,我正在从 JSON 文件中提取 arsenalSquad 数组,而我正在使用的服务将其返回为 arsenalSquad.data。所以我的最终代码如下所示:$scope.arsenalSquad.data = $scope.arsenalSquad.data.map(function(itm){ return (itm.clubCode = "arsenal", itm); }); 你能看出这里有什么问题吗?
    【解决方案3】:
        $scope.ar1 = [
                {"clubCode": "newcastle-united",
                    "firstName": "Tim",
                    "lastName": "Krul",
                    "position": "gk"},
    
                {"clubCode": "newcastle-united",
                    "firstName": "Rob",
                    "lastName": "Elliot",
                    "position": "gk"}
    ];
    
        $scope.ar1.forEach(function (value) {
          value.clubCode = "newcastle-united";
        });
    
        console.log($scope.ar1);
    

    【讨论】:

      【解决方案4】:

      使用 lodash.js 非常简单

      _.assign(arsenalArray, { clubCode: "arsenal" });

      【讨论】:

      • 这看起来很简单。这可以在 AngularJS 中工作吗?我的问题是我正在使用服务从 JSON 文件中提取 arsenalSquad 数组,并将数组返回为arsenalSquad.data。那么,在你的情况下,我会写:_.assign(arsenalSquad.data, {clubCode: "arsenal" });
      猜你喜欢
      • 2019-01-27
      • 1970-01-01
      • 2021-01-11
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      相关资源
      最近更新 更多