这样的排序方法有毛病吗?
// 打乱数组
function shuffle(data){
let startIndex = 0,
endIndex = length = data.length - 1;
while(endIndex){
let index = Math.floor(Math.random()*length);
[data[index], data[endIndex]] = [data[endIndex], data[index]];
endIndex--;
}
}
// 具有负数或重复值的数据除外,使用这种方式似乎比其他排序更快一些。
var obj = {};
var arr = Array.from({length:1e5},(item,index)=>index);
shuffle(arr);
console.time();
arr.forEach(item => { obj[item] = item });
console.log(Object.values(obj));
console.timeEnd();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
没什么毛病,就是洗牌算法,不过洗牌算法乘以length会有重复的洗牌过程,所以可以直接
Object.values - MDN
然后 for...in 里面说
任意顺序,任意顺序,任意顺序
不要依赖 Object 转数组的顺序啊。用来遍历可以,用来排序就算了