阿里笔试js题

有一个数组,其中保存的都是小写英文字符串,现在要把它按照除了第一个字母外的字符的字典顺序(字典顺序就是按首字母从a-z顺序排列,如果首字母相同则按第二个字母……)排序,请编写代码:

例:
["abd","cba","ba",]
排序后
["ba","cba","abd"]

好吧,我在准备笔试,不说了,贴代码:

function arraySort(arr){
			return arr.sort(function(a,b){
				if(a.substring(1)>b.substring(1)){
					return 1;
				}else{
					return -1;
				}
			});
		}
alert(arraySort(["abd","cba","ba"]));

 2、如何用代码将类数组如arguments转换为数组:

Array.prototype.slice.call(arguments,0);

3、请为JavaScript每个Array对象添加一个类似于PHP的shuffle()(意思就是将数组重新排列)的方法。粘代码:

我的代码:

Array.prototype.shuffle=function(){
			var len=this.length;
			var b=[];
			for(var i=0;i<len;i++){
				var index=parseInt(Math.random()*(len-i));
				b[i]=this[index];
				this.splice(index,1);
			}
			for ( i = 0; i <len; i++) {
				this[i]=b[i];
			};
		}
		var a=[1,2,3,4,5,6,7,8];
		a.shuffle();
		alert(a);

 写完之后就感觉,写的好笨啊,能不能简单点呢?

改!

 Array.prototype.shuffle = function() {
            for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
            return this;
        };

  是不是简单多了,而且有逼格,少用了一个循环,开始咋那么笨!

 

posted @ 2015-03-24 16:34  低调的大白兔  阅读(474)  评论(0编辑  收藏  举报