gpt4 book ai didi

javascript - 随机值 - 检查值 - 如果相同取新值

转载 作者:搜寻专家 更新时间:2023-10-31 23:16:06 25 4
gpt4 key购买 nike

我正在为我的网站制作用户推荐信。我在主页上显示 5 个用户评价,当用户加载网页时,这些评价从数组中拉出 @random。在脚本随机获取 5 个推荐后,它会将其注入(inject)到我的 HTML 文件中。

这一切都很好,但我还希望检查每个值,以确保该值未被其他 4 个推荐之一提取。

然后,如果其中两个值相同,我希望脚本提取数组的另一个值。然后它再次需要检查提取的值是否未在其他推荐中使用。

我正在努力寻找一种尽可能高效的方法。如果我只提取 2 个值,我知道该怎么做,但现在我提取 5 个值,每个值都需要与提取的任何其他值进行检查。

var user = [
{
name: 'Tom Levis',
body: 'Toms text'
},
{
name: 'Some Random Guy',
body: 'Some guys text'
},
{
name: 'Peter',
body: 'Peters text'
}
];

var random1 = user[~~(Math.random() * user.length)];
var random2 = user[~~(Math.random() * user.length)];
var random3 = user[~~(Math.random() * user.length)];
var random4 = user[~~(Math.random() * user.length)];
var random5 = user[~~(Math.random() * user.length)];

document.getElementById('testimonial-1').innerHTML = random1.name + '<br>' + '<p id="testimonial-text">' + random1.body + '</p>';
document.getElementById('testimonial-2').innerHTML = random2.name + '<br>' + '<p id="testimonial-text">' + random2.body + '</p>';
document.getElementById('testimonial-3').innerHTML = random3.name + '<br>' + '<p id="testimonial-text">' + random3.body + '</p>';
document.getElementById('testimonial-4').innerHTML = random4.name + '<br>' + '<p id="testimonial-text">' + random4.body + '</p>';
document.getElementById('testimonial-5').innerHTML = random5.name + '<br>' + '<p id="testimonial-text">' + random5.body + '</p>';

最终应该发生的是从数组中提取了 5 个不同的值。所有结果都不应包含相同的值。

最佳答案

我认为最有效的方法是删除已从可用选择池中选择的推荐。

const testimonials = [
{
name: 'Tom Levis',
body: 'Toms text'
},
{
name: 'Some Random Guy',
body: 'Some guys text'
},
{
name: 'Peter',
body: 'Peters text'
}
]

function getTestimonial() {
let index = ~~(Math.random() * testimonials.length)
let val = testimonials[index]
testimonials.splice(index, 1)
return val
}


var random1 = getTestimonial();
var random2 = getTestimonial();
var random3 = getTestimonial();
var random4 = getTestimonial();
var random5 = getTestimonial();

console.log(random1)
console.log(random2)
console.log(random3)
console.log(random4)
console.log(random5)

如果你想避免改变数据,你可以只添加 id 属性到每个条目并检查随机推荐的 id 与一组已经选择的推荐和他们的相应的 id

const data = [
{
id: 1,
name: 'Tom Levis',
body: 'Toms text'
},
{
id: 2,
name: 'Some Random Guy',
body: 'Some guys text'
},
{
id: 3,
name: 'Peter',
body: 'Peters text'
}
]

const selected = []

function getTestimonials2(testimonials) {
while (true) {
let index = ~~(Math.random() * testimonials.length)
if (testimonials.length != selected.length) {
if (selected.indexOf(testimonials[index].id) === -1) {
selected.push(testimonials[index].id)
return testimonials[index]
}
} else {
return undefined
}
}
}

var random1 = getTestimonials2(data)
var random2 = getTestimonials2(data)
var random3 = getTestimonials2(data)
var random4 = getTestimonials2(data)
var random5 = getTestimonials2(data)

console.log(random1)
console.log(random2)
console.log(random3)
console.log(random4)
console.log(random5)

关于javascript - 随机值 - 检查值 - 如果相同取新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55369488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com