【问题标题】:I want to get an array random elemet from an intial array [duplicate]我想从初始数组中获取数组随机元素[重复]
【发布时间】:2019-10-24 07:34:22
【问题描述】:

我有一个初始array1 =[{id:"0",a:"4",b:"6"},{id:"1",a:"r",b:"8"},{id:"2",a:"8",b:"9"}] 我想要另一个包含初始数组中随机元素的数组

randomArray=[{id:"0",a:"4",b:"6"},{id:"2",a:"8",b:"9"}] 

我该怎么做?

【问题讨论】:

  • 您的解决方案可以基于Math.random。你没有描述randomArray的长度是否小于array1的长度(否则你会有元素重复)
  • 请写更多细节:初始数组的长度,randomArray

标签: javascript


【解决方案1】:

您可以使用Array.prototype.filterMath.random(),如下所示;

const array1 =[{id:"0",a:"4",b:"6"},{id:"1",a:"r",b:"8"},{id:"2",a:"8",b:"9"}];
const filtered = array1.filter(() => Math.random() > 0.5);
console.log(filtered);

注意:在我的解决方案中,每个单独的项目被选中的概率是 50%。

【讨论】:

  • 这有50% 概率返回一个空数组,使用递归确保它至少返回一个
  • @EslamAbuHugair 谢谢,但不要求结果至少应包含一项。
  • @EslamAbuHugair 返回一个空数组的概率是0.5 ^ array.length。 :)
【解决方案2】:

const random = (array, length) => array.sort(() => 0.5 - Math.random()).slice(0, length);

const mock = [
  { id: "0", a: "4", b: "6" },
  { id: "1", a: "r", b: "8" },
  { id: "2", a: "8", b: "9" },
  { id: "3", a: "8", b: "9" }
];

console.log(random(mock, 2))
console.log(random(mock, 3))
console.log(random(mock, 4))

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 2018-05-03
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 2012-01-23
    • 2023-01-28
    • 2015-01-31
    • 1970-01-01
    相关资源
    最近更新 更多