陣列的常用方法(4)--es3.0:燒腦小練習
阿新 • • 發佈:2018-11-12
練習23:給一個有序的陣列亂序,而且每次的順序還不一樣。
用sort()排序,亂序也得用sort();
Math.random()返回的是0-1之間的開區間的數。
那要產生負數,怎麼辦?
減一,減一不就減沒了嗎?減0.5是不是就完事了!
var arr = [1,2,3,4,5,6,7];
arr.sort(function(){
return Math.random() - 0.5;
});
每次重新整理之後的arr是不是就亂序了,而且每次的順序都不一樣。
練習24:
var xiaoming = { name : "xiaoming", age : 18, sex : "male", face : "handsome" } var xiaozhang = { name : "xiaozhang", age : 40, sex : "male", face : "amazing" } var xiaoliu = { name : "xiaozhang", age : 20, sex : "male", } var arr = [xiaoming,xiaozhang,xiaoliu]; arr.sort(function(a,b){ return a.age > b.age; });
所以這個sort(),一定把他的精髓掌握!
練習25:
給定一個數組arr,按數組裡面字元的長度排序。
arr = ["ac","bcd","cccc","dddd",
"asdfkhiuqwe","asdoifqwoeiur","asdf"];
arr.sort(function(a,b){
return a.length - b.length;
});
這沒啥難得,
要是讓你按位元組的長度來排序呢?
function ret(str){
var num = str.length;
for(var i = 0;i < str.length;i ++){
if(str.charCodeAt(i) > 255){
num++;
}
}
return num;
}
arr = ["ac","bcd","cccc","dddd",
"asdfkhiuqwe","asdoifqwoeiur","asdf"];
arr.sort(function(a,b){
return ret(a) - ret(b);
});