【发布时间】:2022-01-12 12:53:37
【问题描述】:
我正在尝试创建一个包含 12 种独特产品的数组。这些产品是从从我的 MONGODB 数据库中检索到的产品列表中选择的。我可以很好地创建数组,但我似乎无法每次都将数组的长度设为 12。我需要数组的最小长度为 12,数组的最大长度也为 12。
这是我下面的代码,每次运行此代码时,randomProducts.length 通常是随机长度,而不是 12。
Products.find({}).limit(12).exec(function (err, randProducts) {
var randomProducts = []
for (let i = 0; i < randProducts.length; i++) {
var rand = Math.floor(Math.random() * (randProducts.length - 0) + 0);
if (randomProducts.includes(randProducts[rand]) == false) {
randomProducts.push(randProducts[rand])
}
}
console.log(randomProducts.length)
})
【问题讨论】:
-
商店是否包含重复项?或者您只是想获得 12 种产品(您已经知道它们没有重复)然后洗牌? (我猜这些对象无论如何都会不同,但是...)
-
商店不包含重复项。所有的物品都是独一无二的。但是,由于我正在生成从 0 到 randProducts.length 的随机产品集,因此产品可能会在 randomProducts 数组中重复。我不希望产品在数组中出现两次。
-
既然如此,你就是shuffling an array。
标签: javascript node.js arrays mongodb