正确构建一个对象数组

时间:2017-10-06 16:16:44

标签: javascript angularjs json

我有一个对象:

cars = {
  'toyota': {
    'year': 2015,
    'color': 'blue'
  },
  'mazda': {
    'year': 2017,
    'color': 'white'
  }
}

我想遍历cars对象中的车辆并将它们推送到另一个阵列。

for ( carMake in cars ) {
  $scope.newCarsArray.push(cars[carMake]);
}

以上正确地将每个carMake对象推送到$scope.newCarsArray数组中。但是,这只会推动内容(例如:年份和颜色),而不是车辆名称(如丰田和马自达)。如何在不改变原始对象的情况下将每个整个对象(包括车辆名称)推入$scope.newCarsArray

我认为以下方法可行,但它只会将汽车制作对象名称作为字符串

for ( carMake in cars ) {
  $scope.newCarsArray.push(carMake);
}

期望的输出:

$scope.newCarsArray = [
  {
    toyota: {
      'year': 2015,
      'color': 'blue'
    }
  },
  {
    mazda: {
      'year': 2017,
      'color': 'white'
     }
  }
];

2 个答案:

答案 0 :(得分:1)

使用键名创建一个新对象并按下:

Objects.keys(cars).forEach(function(car) {
    $scope.newCarsArray.push({
        [car]:cars[car]
    });
}); //Outputs like: [{"toyota": {}}, ..]

答案 1 :(得分:1)

如果您需要car作为数组项的一部分:

angular.forEach(cars, function(item, key) {
    var newItem = item;
    newItem.car = key;
    $scope.newCarsArray.push(newItem);
  });

输出:

[
  {
    "year": 2015,
    "color": "blue",
    "car": "toyota"
  },
  {
    "year": 2017,
    "color": "white",
    "car": "mazda"
  }
]

Demo Fiddle