当条件相等时,在javascript中对函数进行排序

时间:2018-05-14 03:47:34

标签: javascript

我想先根据第二个单词对文件中的字符串进行排序,如果它们相等,则考虑第一个单词。在第17行,我如何添加条件来检查单词是否相同,然后根据第一个单词对其进行排序。

这是我的代码:https://jsfiddle.net/am03uf7e/

var finalLine=[];
function testing() {
    var logFileSize = 5;
    var logLines = ["a1 9 2 3 1", "g1 act car", "z04 4 7", "ab1 off  key dog", "a8 act zoo" ];
  var newLinesw=[];
  var newLinesn=[];
  var wordsarray=[];
  for(var i=0; i< logFileSize; i++) {
        var words = logLines[i].split(" ");
    if(isNaN(words[1]) )
        newLinesw.push(logLines[i]);
    else 
      newLinesn.push(logLines[i]);
    }
  newLinesw.sort(function(a,b){return a.split(" ")[1].localeCompare(b.split(" ")[1]); });

  //To Do : apply condition for the same second word and sort by 1 word. 
  for(i=0;i<newLinesw.length;i++){
    wordsarray.push(newLinesw[i].split(" ")[1]);
  }

  newLinesn.sort(function(a,b){return a.split(" ")[0].localeCompare(b.split(" ")[0]); });
   finalLine = newLinesw.concat(newLinesn);
   return finalLine;

}
document.getElementById("testing").innerHTML = testing();

1 个答案:

答案 0 :(得分:0)

如果初始比较结果为||,请使用0对第一个字进行测试:

return a.split(" ")[1].localeCompare(b.split(" ")[1]) || a.split(" ")[0].localeCompare(b.split(" ")[0]);

但这很糟糕,很难阅读。最好为每个单词提出变量:

newLinesw.sort(function(a, b) {
  const [a0, a1] = a.split(" ");
  const [b0, b1] = b.split(" ");
  return a1.localeCompare(b1) || a0.localeCompare(b0);
});