创建新帖子时如何生成下一个商品ID?

时间:2018-09-20 12:12:54

标签: javascript angular typescript ecmascript-6

如何在帖子中生成下一个ID,如果在add方法中仅添加“ title”和“ url”?

方法:

    addPost(title:string, url:string):void {
    const post = {
        title:title,
        url: url
    };
    this.collection.push(post);
}

我在其中显示帖子的模板:

        <img [src]="pic.url" alt="test" class="img-responsive">
<p class="lead"><span>{{pic.id}}:</span>{{pic.title}}</p>
<div class="del">
    <button class="btn btn-outline-danger (click)="removePost(pic.id)">Delete</button></div>

输入数据接口:

export interface Picture {
  id?: number,
  title: string,
  url: string
}

我在阵列中的最新帖子:

{
  id: 10,
  title: "beatae et provident et ut vel",
  url: "https://placekitten.com/200/200",
}

1 个答案:

答案 0 :(得分:3)

如果您使用lodash,请使用lodash last方法:

addPost(title:string, url:string):void {
  const post = {
    title:title,
    url: url,
    id: _.last(this.collection).id + 1
};
this.collection.push(post);

否则,如果使用纯JavaScript:

addPost(title:string, url:string):void {
  const post = {
    title:title,
    url: url,
    id: this.collection[this.collection.length -1].id + 1
};
this.collection.push(post);

这假定下一个ID将是该ID加您集合中最后一个对象之一。

如果集合当前为空,您还可能需要引入一些防御性代码来将ID设置为1。

您还可以只使用GUID或UUID生成器,请参阅非常流行的npm uuid模块。