面试题:数组随机排列
今天去面试做了一套题,有个题目是就是数组随机排列。 我脑子里并没有概念,只是因为前几天看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);