从数组和减量值中选择随机对象

时间:2019-02-19 18:35:47

标签: javascript arrays

我想知道如何从数组中随机选择一个对象并减小valid的值。

我有以下内容:

const codes = [
   {
      code: "AG1",
      valid: 20
   },
   {
      code: "AG2",
      valid: 20
   },
   {
      code: "AG3",
      valid: 20
   }
]

现在我像这样随机选择对象

var code = codes[Math.floor(Math.random()*codes.length)];

选择一个对象后,我需要将该对象的有效值减一。

有什么主意吗?

2 个答案:

答案 0 :(得分:2)

您可以使用-递减

var codes = [{
    code: "AG1",
    valid: 20
  },
  {
    code: "AG2",
    valid: 20
  },
  {
    code: "AG3",
    valid: 20
  }
]

var rand=Math.floor(Math.random() * codes.length);
console.log(codes[rand].valid!=0?--codes[rand].valid:codes[rand].valid);

答案 1 :(得分:0)

如果需要将更改保留在阵列上,则可以在随机获得codes[idx].valid--之后使用index

const codes = [
   {code: "AG1", valid: 20},
   {code: "AG2", valid: 20},
   {code: "AG3", valid: 20}
];

const decRandom = (codes) =>
{
    let idx = Math.floor(Math.random() * codes.length);

    // Decrement only if greater then zero.
    codes[idx].valid > 0 && codes[idx].valid--;
}

let iteration = 0;

setInterval(() =>
{
    decRandom(codes);
    console.log("Iteration: " + ++iteration, JSON.stringify(codes));
}, 2000);