我有一個包含 blob 陣列的物件(在此處表示為字串!),pictureIndex如下所示:
const data = {
pictures: ['blob1','blob2','blob3'],
pictureIndex: 0
}
shuffleArray(data.pictures);
注:pictureIndex是指數'blob1'
我想對圖片陣列中的 blob 進行洗牌,以對 blob 進行新的隨機排列,但我想blob1在最終洗牌的陣列中獲得 的索引。因此,如果混洗資料是這樣的:
['blob2','blob3','blob1']
我想回到2為pictureIndex“blob1”的...
到目前為止,我可以像這樣輕松地洗牌圖片而不知道如何修改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;
}
uj5u.com熱心網友回復:
一種方法是創建 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
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/338598.html
標籤:javascript 查询
