JS 英文名排序

//写一个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;i1];//用正则取出姓,其实就是split(' ')[1],蠢死了
  }
      //简单选择排序(Simple Selection Sort)
      for(i=0;ivar 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
//大于 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);
  });
}

你可能感兴趣的:(javascript,算法)