代码之家  ›  专栏  ›  技术社区  ›  zomdar

如何使用forEach向类似于push(array)的对象添加值

  •  0
  • zomdar  · 技术社区  · 6 年前

    我目前正在努力向对象添加一些数字,就像使用push()为数组添加数字一样。

    我有一个如下所示的数组:

    $scope.order = [
      {sequenceNumber:1},
      {sequenceNumber:2},
      {sequenceNumber:3}  
    ];
    

    var newOrder = {};
    
    angular.forEach($scope.order, function(orderValue) {
      newOrder = orderValue.sequenceNumber;
    });
    

    但是…这不会返回我想要的结果

    我想让“新订单”看起来像这样:

    var newOrder = {
      1: 1,
      2: 2,
      3: 3
    };
    

    值=数组的位置

    键=序列号

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mihai Potra    6 年前

    你可以用 Array.prototype.reduce

    var newOrder = $scope.order.reduce(function(acc, item, index) {
      acc[item.sequenceNumber] = index;
      return acc;
    }, {});
    

    或更短的等效物:

    var newOrder = $scope.order.reduce((acc, {sequenceNumber}, index) => {
      acc[sequenceNumber] = index;
      return acc;
    }, {});