JavaScript仅返回一个内部时间戳以进行循环



我想为for循环中的每个项目生成一个时间戳,但是我在循环内只能获得一个时间戳。我如何为JavaScript中的每个项目制作新的时间戳。

for (var i = 0 ; i < 5; i++ ) { vm.workers[i].id = (new Date()).getTime(); }

这个只提供一个时间戳,而不是5个不同的时间戳,任何人都可以告诉我如何在循环内生成多个时间戳。

所有ID都是相同的,因为循环根本没有时间运行。那么,如何为每个生成一个唯一的数字呢?每次使用它时添加一个。

var ts = (new Date()).getTime();
for (var i = 0 ; i < 5; i++ ) { 
  vm.workers[i].id = ts++
}

回答具有此循环的原始问题:

for (var i = 0 ; i < 5; i++ ) { new Date().getTime(); }

您没有对它们做任何事情,因此,如果您不使用控制台,它只会打印最后一个或根本不打印。

尝试使用console.log。

记录每个人
for (var i = 0 ; i < 5; i++ ) { console.log(new Date().getTime()); }

将它们分配给一个数组,然后像这样添加它们,因此会给您一个日期/时间stanmps的数组:

var list = [];
for (var i = 0 ; i < 5; i++ ) { list.push(new Date().getTime()); }
console.log(list);

一个简单的循环迭代肯定可以比毫秒完成的时间少于毫秒,因此您可以获得相同的时间戳。

找到一种更可靠的方法来创建ID,例如GUID。

这是一个函数,取自创建GUID的S.O答案:

function guid() {
  function s4() {
    return Math.floor((1 + Math.random()) * 0x10000)
      .toString(16)
      .substring(1);
  }
  return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
    s4() + '-' + s4() + s4() + s4();
}
console.log(guid())

最新更新