创建新帖子时如何生成下一个项目ID?

问题描述 投票:0回答:1

如果在add方法中,我只添加“标题”和“url”,如何生成帖子中的下一个ID?

方法:

    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",
}
javascript angular typescript ecmascript-6
1个回答
3
投票

如果您使用 lodash,请使用 lodash 最后的方法:

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 模块。

© www.soinside.com 2019 - 2024. All rights reserved.