如何推送新数组并向对象添加增量编号(ID)

时间:2017-05-16 21:53:43

标签: arrays angular typescript

我想了解如何使用唯一ID推送新行。 如果canvas不为空,我想使用以下ID推送一个新的Row。如果canvas已经有一行,那么下一个就是2,依此类推。

我应该获得canvas数组,使用最新的ID搜索我的最后一行对象吗? (我将在1000行内,所以这可能会很慢) 或者有没有办法只是增加下一个数字而不进行循环?

 canvas: Array<any> = [];
 row: Array<any> = [];

    onDropSuccess(event: any, droppedOn: string) {
        if(this.canvas == [] || this.canvas == null  || this.canvas == 0 ){
            this.canvas.push(
                        new Row(1, 
                        [new Widget('Lorem ipsumrci viverra auctor')]
                        )
            );
            console.log(this.canvas)

        }else{
            this.canvas.push(
    **//How to push here a new row with unique ID**
                        new Row(1, 
                        [new Widget('Lorem ipsumrci viverra auctor')]
                        )
            );
            console.log(this.canvas)


        }


    }

    class Row {
        constructor(public id: Number, public widgets: Array<Widget>) {}
    }
    class Widget {
        constructor(public name: string) {}
    }

1 个答案:

答案 0 :(得分:2)

如果你的行始终从1开始并且只需要增加为唯一,那么你所需要的就是(无需条件,因为你的数组始终以0的长度开始):

import com.test.example.DeprecatedClass;

/**
 * This class replaces the deprecated class @{link DeprecatedClass}
 */
@SuppressWarnings("deprecation")
public class ReplacingClass {}

如果您的数组可能以任何顺序具有任何可能的数字ID集,您可以对数组进行排序,找到最大数字,然后递增:

onDropSuccess(event: any, droppedOn: string) {
  this.canvas.push(
    new Row(this.canvas.length+1, [new Widget('Lorem ipsumrci viverra auctor')])
  );
}