在不移动FALSY
值(如false
、null
、0
、""
、undefined
和NaN
)的情况下混洗数组,可以使用以下步骤:
混洗数组通常指的是将数组中的元素随机重新排列。如果不移动FALSY
值,意味着这些值在混洗后的数组中应保持其原始位置。
FALSY
值)位置不变的应用场景非常有用。以下是一个JavaScript示例代码,展示如何实现这一功能:
function shuffleArrayWithFalsey(arr) {
// 创建一个副本以避免修改原始数组
let shuffled = arr.slice();
// 获取所有非FALSY值的索引
let indices = shuffled.map((value, index) => value ? index : null).filter(index => index !== null);
// 使用Fisher-Yates算法混洗这些索引对应的元素
for (let i = indices.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[shuffled[indices[i]], shuffled[indices[j]]] = [shuffled[indices[j]], shuffled[indices[i]]];
}
return shuffled;
}
// 示例
let arr = [1, 0, 3, false, 5, null, 7];
console.log(shuffleArrayWithFalsey(arr));
FALSY
值的索引,并过滤掉null
值。FALSY
值。FALSY
值的稳定性。通过这种方法,可以在保持FALSY
值位置不变的同时,有效地混洗数组中的其他元素。
领取专属 10元无门槛券
手把手带您无忧上云