感觉自己js掌握的很不扎实,需要复习以下,所以就去看w3c的教程,看了字符串和数组的方法,突然意识到,之前笔试遇到的这个题,当时选对了,因为我想最不可能的就是最可能的(哈哈哈),但是也暴露了自己真的很多知识都不太牢固。
然后在看到数组的sort方法时,突然想到这个题了,
当然本人对sort函数也记得很模糊了,只知道它时拿来排序的。
图片中提到用比值函数来修正,
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
sort中传入比值函数,函数的返回值无外乎正数、负数、0,sort会根据返回值来确定排序,所以我们就可以定义一个自己的排序函数,然后把它给封装起来。
var arr4=[{name:'Zann',age:'31'},{name:'Jack',age:'59'},{name:'Rita',age:'20'}]
//我想按名字首写字母顺序排序
arr4.sort(
(a, b) =>{
return a['name'] < b['name'] ? -1 : a['name'] > b['name'] ? 1 : 0
}
);
console.log(arr4);//排序成功
//封装这个比值函数,传入排序的key
function sortBy(key){
return (a,b)=>{
return (a[key]<b[key])? -1:(a[key]>b[key])? 1:0
}
}
console.log(arr4.sort(sortBy('name')));
生活中倒是经常见到按名字首写字母排序的,汉字怎么办呢?于是我百度了一下,得知这样一个方法:
a.localeCompare(b),比较a和b返回值也是1,-1,0这些