获取混洗斑点的索引[图像、音频等的斑点]



我有一个对象,其中包含Blob数组(这里用字符串表示!)和一个pictureIndex,如下所示:

const data = {
pictures: ['blob1','blob2','blob3'],
pictureIndex: 0 
}
shuffleArray(data.pictures);

注:pictureIndex'blob1'的索引

我想打乱图片数组中的斑点以获得斑点的新的随机排列,但我想在最终打乱的数组中获得blob1的索引。因此,如果混洗数据是这样的:

['blob2','blob3','blob1']

我想返回2作为'blob1'的pictureIndex。。。

到目前为止,我可以像这样轻松地洗牌,而不知道如何修改pictureIndex:

const data = {
pictures: ['blob1','blob2','blob3'],
pictureIndex: 0 
}

shuffleArray(data.pictures);
function shuffleArray(array) {
let currentIndex = array.length,  randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
[array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
}
return array;
}

一种方法是生成shuffle函数,接受完整对象,然后返回带有shuffle数组和更新索引的完整对象。

这样一来,您就不需要再从搅乱的数组中找到索引了。

let data = {
pictures: ['blob1', 'blob2', 'blob3'],
pictureIndex: 0
}
data = shufflePictures(data);
console.log(data)
function shufflePictures(data) {
let currentIndex = data.pictures.length,
randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
[data.pictures[currentIndex], data.pictures[randomIndex]] = [data.pictures[randomIndex], data.pictures[currentIndex]];
if (randomIndex === data.pictureIndex) {
data.pictureIndex = currentIndex
}
}
return data
}

相关内容

  • 没有找到相关文章