如何从每个原始数组项中的特定属性创建一个新数组

时间:2017-08-17 18:34:54

标签: javascript arrays ecmascript-6 mapping spread-syntax

我有一个具有这种结构的项目数组:

[ {price: 10}, {price: 20} ]

我想创建一个新数组,它只是每个原始数组项的产品,例如:

import { Component, OnChanges, Input, EventEmitter, Output } from '@angular/core';

@Component({
    selector: 'pm-star',
    templateUrl: './star.component.html',
    styleUrls: ['./star.component.css']
})
export class StarComponent implements OnChanges {
    @Input() rating: number;
    starWidth: number;
    @Output() ratingClicked: EventEmitter<string> =
            new EventEmitter<string>();

    ngOnChanges(): void {
        this.starWidth = this.rating * 86 / 5;
    }

    onClick(): void {
        this.ratingClicked.emit(`The rating ${this.rating} was clicked!`);
    }
}

使用javascript(es6 / 2015很好)

最快的方法是什么?没有循环/地图有没有办法做到这一点?数组中的项目数量将是动态的/我不知道可能有多少项目。

1 个答案:

答案 0 :(得分:1)

最简单的方法是将其映射

var originalArray = [{
    product: {
      price: 10
    },
    shipping: {}
  },
  {
    product: {
      price: 20
    },
    shipping: {},
  }
]

var newArray = originalArray.map(item => item.product);

console.log( newArray )

没有迭代

就没有办法做到这一点