javascript - 根据未用作其他评论 ID 的数字生成 ID

标签 javascript arrays loops

我正在制作这个算法,该算法应该为新创建的评论生成新的 ID。 ID 应该是唯一的,因此我做了几个循环,迭代现有评论的 ID 并检查某个数字是否已在其他评论上用作 ID。

这很难解释,当我试图弄清楚它时,我的大脑融化了,所以这是代码。现在不起作用。有什么想法吗?

comments 是一个充满对象的数组。每个对象都有 ID 属性,其值为一个数字。

var newId;
var possibleId = -1;
while (!newId) {
  possibleId++
  for (var i = 0; i < comments.length; i++){
    if(state.comments[i]){
      if (comments[i].id !== possibleId){
        if (i === comments.length - 1){
          newId = possibleId
          break
        }
      } else {
        break
      }
    }
  }
}

最佳答案

使用 Array.prototype.reduce() 的解决方案

var nextId =  comments.reduce(a,c){
     return Math.max(a, c.id);
},0) +1;

只需获取最高电流并添加一个即可

关于javascript - 根据未用作其他评论 ID 的数字生成 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39759640/

相关文章:

javascript - 输入类型 ="file"onclick 有效,但文件选择不显示

javascript - Protractor/WebDriverJS 将元素值作为对象数组返回

javascript - 颜色选择器不知道如何在 customElements2 内添加十六进制

python - 从 OpenCV 返回的某个 numpy 数组中获取元素?

c - (*ptr)[10] 是什么意思?

r - 如何遍历多个模型以放入 R 中的列表

javascript - 添加按钮禁用时的警告

c++ - 在 C++ 中声明可变长度二维数组的正确方法

javascript - 循环输入数组以设置值, "cannot set property value of undefined"?

c - 程序循环次数过多,并产生奇怪的行为