首页 > 解决方案 > 为什么我的随机函数两次返回相同的值

问题描述

背景:我正在创建一个带有一些虚拟图表的虚拟网站。我需要一些类似的 js 对象中的随机值,如下所示:

object = {
  x: static,
  y: static,
  ...

  data: random
}

所以我想出了这样的事情:

async function getOption() {
  return getRandom();
}

async function setup() {
  let template = {
    static1: "xx",
    static2: "xx",
    option: 1
  }

  let v1 = template;
  v1.option = await getOption();

  let v2 = template;
  v2.option = await getOption();

  console.log(await getOption(), await getOption())
  console.log(v1.option, v2.option)

}

function getRandom() {
  return Math.floor(Math.random() * 100);
}

setup()

但是我注意到了一些我不明白的奇怪现象。如果我想分配一个新号码,我每次都会得到两次相同的“随机”值。此外,如果我在 a 中调用它console.log(),它会按预期工作。

现在我的问题:

N°1:我怎样才能创建很多除了1之外具有相同属性的大对象?

N° 2:为什么我两次得到相同的值?这对我来说真的没有意义。我错过了什么吗?

标签: javascript

解决方案


你有v1=template;and v2=template;,所以 v1 和 v2 是同一个对象。

如果要复制模板,请使用

v1 = {...template};
v2 = {...template};

推荐阅读