【JavaScript】文章自动别名生成函数

超级版主 沉冰浮水 2020-6-29 2721

20200629192821 ← 感觉太长

20200629789       ← 这样感觉好些

日期+三位近似随机的数,并且利用localStorage防止重复。。

function fnAutoAlias() {
  if (document.forms["edit"].edtAlias.value == "") {
    const vDate = new Date();
    const year = vDate.getFullYear();
    const month = vDate.getMonth() + 1;
    const day = vDate.getDate();
    const vNWE = vDate.valueOf() / 233;
    const strAlias = [
      year.toString() +
        ("0" + month.toString()).substr(-2, 2) +
        ("0" + day.toString()).substr(-2, 2),
      vNWE.toString().substr(-3, 3),
    ];
    // console.log(strAlias);
    const lsKeyCurDay = "InputMove_curDay";
    const lsKeyUsedList = "InputMove_UsedList";
    if (
      !localStorage[lsKeyCurDay] ||
      localStorage[lsKeyCurDay] !== strAlias[0]
    ) {
      localStorage[lsKeyCurDay] = strAlias[0];
      localStorage[lsKeyUsedList] = "";
    }
    // console.log(localStorage[lsKeyUsedList]);
    if (
      localStorage[lsKeyUsedList] &&
      localStorage[lsKeyUsedList].indexOf(strAlias[1]) > -1
    ) {
      fnAutoAlias();
    } else {
      document.forms["edit"].edtAlias.value = strAlias.join("");
      localStorage[lsKeyUsedList] += `${strAlias[1]}|`;
    }
  }
}

QQ群:「我的咸鱼心」「「水坑」系列教程索引
←_←我大概率能够解决你所实际面临的问题(收费),然而”你提出的问题“却往往是另一个问题。

最新回复 (4)
全部楼主
  • 超级版主 隔壁老李 2020-6-30 1
    引用 2
  • 应用开发者 Mr. 2020-6-30 0
    引用 3
    时间+postID这样不是更好吗,也不担心重复

    123

  • 超级版主 沉冰浮水 2020-7-1 0
    引用 4
    Mr. 时间+postID这样不是更好吗,也不担心重复
    需要提交后才能拿到当前文章的id,或者查表拿最大值,另外考虑到长度则需要作为数字相加,,会破坏使用日期的意义,【虽然意义不大就是了。。

    QQ群:「我的咸鱼心」「「水坑」系列教程索引
    ←_←我大概率能够解决你所实际面临的问题(收费),然而”你提出的问题“却往往是另一个问题。

  • 超级版主 沉冰浮水 2月前 0
    引用 5

    JS 生成 8 位年月日日期格式,并附加三位随机数,同时使用 localStorage 记录生成过的数防止重复

    以下是使用 JavaScript 生成 8 位年月日日期格式并附加三位随机数的示例代码:
    ```javascript
    function generateRandomNumber() {
      return Math.floor(Math.random() * 1000);
    }
    function generateUniqueDate() {
      let currentDate = new Date();
      let year = currentDate.getFullYear().toString().substr(-2);
      let month = ('0' + (currentDate.getMonth()+1)).slice(-2);
      let day = ('0' + currentDate.getDate()).slice(-2);
      let uniqueId;
      
       do {
        uniqueId = `${year}${month}${day}-${generateRandomNumber()}`
       } while(localStorage.getItem(uniqueId));
       localStorage.setItem(uniqueId, true);
       return uniqueId;
    }
    ```
    该函数首先获取当前日期,然后将年份、月份和日期转换为两个数字和一个字符串。接下来,它使用 `do...while` 循环生成唯一的 ID,并检查是否已经在本地存储中存在。如果不存在,则将其添加到本地存储中,并返回该值。
    您可以通过调用 `generateUniqueDate()` 函数来生成新的唯一 ID。每次调用此函数时,它都会检查本地存储以确保不重复。
    希望这可以帮助您!

    QQ群:「我的咸鱼心」「「水坑」系列教程索引
    ←_←我大概率能够解决你所实际面临的问题(收费),然而”你提出的问题“却往往是另一个问题。

    • ZBlogger技术交流中心
      6
          
返回