面试题:数组随机排列

今天去面试做了一套题,有个题目是就是数组随机排列。 我脑子里并没有概念,只是因为前几天看javascript高级程序设计3的第五章讲数组的时候讲解的数组排序方法reverse() 和sort()。reverse 是颠倒数组中元素的位置并返回颠倒后的数组,按照字符串的Unicode码位点(code point)排序;而js排序是就是用 sort 方法来排序也是按照的是按照字符串的Unicode码位点(code point)排序;sort方法的参数只有一个就是compareFunction,翻译过来就是比较函数。

上图是sort比较规则。

了解完整个sort,回归题目。 数组随机排序,看到随机,我们第一反应就是用Math.random函数,排序用sort,但是该怎么排序?在面试中我一直在思考,然后面试完了我就百度了一下找到了答案。

下面是完整代码

var arr = ["1","2",1,2,6,"sdas","sqqwcm","qywcqkn","david"];
function compare (){
    return Math.random() > 0.5 ? 1 : -1;
}
var newArr = arr.sort(compare);
console.info(newArr);

 

posted @ 2016-06-18 18:12  情殇沫雨  阅读(232)  评论(0编辑  收藏  举报