1. 程式人生 > >陣列的常用方法(4)--es3.0:燒腦小練習

陣列的常用方法(4)--es3.0:燒腦小練習

練習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);
			});