阿里笔试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; };
是不是简单多了,而且有逼格,少用了一个循环,开始咋那么笨!