角:如何将一个数组复制到另一个?

时间:2018-11-12 09:51:53

标签: angular typescript

我正在将一个数组等于另一个数组

        orders = [
           {
            'id': PROCESSING,
            'displayName': 'Processing'
           },
           {
            'id': SHIPPED,
            'displayName': 'Shipped'
           }
        ];

        cloneOrders = [];

setOrders() {
        this.orders.forEach((order: any) => {
                this.cloneOrders = order;
        });
    }

但是当我尝试在另一个函数中获取'cloneOrders'的值时,它将返回一个空数组

getOrders(status, minutes) {
        this.cloneOrders .forEach((order: any) => {
                console.log(order);
        });
    }

两个功能都在同一组件中。请帮我解决这个感谢。

5 个答案:

答案 0 :(得分:4)

尝试这样

setOrders() {
        this.cloneOrders= [...this.orders];
    }

编码愉快!!

答案 1 :(得分:1)

您需要.push才能将项目添加到数组中,

this.orders.forEach((order: any) => {
       this.cloneOrders.push(order);
 });

使用扩展算子使用ES6的更好方法,

setOrders() {
        this.cloneOrders= [...this.orders];
}

答案 2 :(得分:0)

您每次将新对象从orders分配到cloneOrders时,都需要将orders推入cloneOrders

setOrders() {
        this.orders.forEach((order: any) => {
                this.cloneOrders.push(order);
        });
    }

答案 3 :(得分:0)

如果要进行深克隆-

let cloned = this.cloneOrders.map(x => Object.assign({}, x));

答案 4 :(得分:0)

我们可以使用扩展算子使用ES6

orders = [
 {'id': PROCESSING,'displayName': 'Processing'},
 {'id': SHIPPED,'displayName': 'Shipped'}
];

cloneOrders = [];

setOrders(){
  this.cloneOrders= [...this.orders];
}
相关问题