//写一个sortReindeer()函数,使下列数组的输入的输出为,按照英文名的姓进行排列
/*即
["Prancer Chua", "Blitzen Claus", "Cupid Foroutan", "Vixen Hall", "Donder Jonker", "Comet Karavani", "Dancer Moore", "Dasher Tonoyan"]
*/
sortReindeer(
["Dasher Tonoyan",
"Dancer Moore",
"Prancer Chua",
"Vixen Hall",
"Comet Karavani",
"Cupid Foroutan",
"Donder Jonker",
"Blitzen Claus"]
);
我的:(和人家比好垃圾。。)
function sortReindeer(reindeerNames){
console.log("start");
var reg = /\s([A-Z][a-z]*)/;
var arr=new Array();
var temp=0;
for(var i=0;i<reindeerNames.length;i++){
arr[i]=reindeerNames[i].match(reg)[1];//用正则取出姓,其实就是split(' ')[1],蠢死了
}
//简单选择排序(Simple Selection Sort)
for(i=0;i<arr.length;i++){
var k=i;
for (var j = i+1; j < arr.length; j++) {
if (arr[j] < arr[k]) {
k=j;
};
}
if(k!=i){
temp = reindeerNames[i];
reindeerNames[i]=reindeerNames[k];
reindeerNames[k]=temp;
temp = arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
}
console.log(reindeerNames);
return(reindeerNames);
}
//No.1
function sortReindeer(reindeerNames){
//调用sort方法
reindeerNames.sort(function(a, b) {
return a.split(' ')[1] > b.split(' ')[1];//直接通过split方法把数组分成2份!!
});
}
//No.2 map()????
function sortReindeer(Names){
return Names.map(swap).sort().map(swap);
}
function swap(name){
return name.split(' ').reverse().join(' ');
}
//No.3 a.substr(a.lastIndexOf(' ')):取得姓
//a.localeCompare(b):如果a<b:,则 localeCompare() 返回小于 0 的数。如果a 大于 b,则该方法返回
//大于 0 的数。如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0。
function sortReindeer(reindeerNames){
return reindeerNames.sort(function(a, b) {
return a.substr(a.lastIndexOf(' ')).localeCompare(b.substr(b.lastIndexOf(' ')));
});
}
或者
function sortReindeer(reindeerNames){
return reindeerNames.sort(function (x, y) {
return x.substr(x.indexOf(" ") + 1) > y.substr(y.indexOf(" ") + 1);
});
}

328

被折叠的 条评论
为什么被折叠?



