【问题标题】:sort word in 2nd array在第二个数组中排序单词
【发布时间】:2018-08-13 22:19:04
【问题描述】:

我有一个看起来像这样的第二个数组

[['He', 2], ['saw', 1], ['her', 2], ['walking', 1], ['so', 1], ['asked', 1]]

我需要按字母顺序/按右侧的数字对数组进行排序

function sortText(arr, word) {
if(word)
    return arr.map(function(item) { return item[1]; }).sort();
}

*如果单词参数为真,则数组按字母顺序排序,如果为假,则数组按右侧的数字排序*

the wanted result
 if(word==true)
[['He', 2], ['asked', 1], ['her', 2], ['saw', 1], ['so', 1], ['walking', 1]]
if(word==false)
[['saw', 1], ['walking', 1], ['so', 1], ['asked', 1], ['He', 2], ['her', 2]]

【问题讨论】:

标签: javascript sorting


【解决方案1】:

试试这个:-

//WITH FIRST COLUMN
 arr = arr.sort(function(a,b) {
  return a[0] - b[0];
});


//WITH SECOND COLUMN
arr = arr.sort(function(a,b) {
return a[1] - b[1];
});

如果没有帮助,请使用“>”而不是“-”。

如果这对您有帮助,请告诉我。

【讨论】:

    【解决方案2】:

    您按以下方式对数组进行排序:

    var arr = [['He', 2], ['saw', 1], ['her', 2], ['walking', 1], ['so', 1], ['asked', 1]];
    
    function sortText(arr, wor) {
      arr.sort(([str1, nb1], [str2, nb2]) => wor ? (str1 > str2 ? 1 : -1) : nb1 - nb2)
    }
     
    sortText(arr, true)
    console.log(arr);
    sortText(arr, false);
    console.log(arr);

    【讨论】:

      【解决方案3】:

      如果需要,您可以交换排序顺序:

        let wordFirst = true;
      
        arr.sort(([wordA, indexA], [wordB, indexB]) => {
          const byWord = wordA.localeCompare(wordB);
          const byIndex = indexA - indexB;
      
          return wordFirst ? byWord || byIndex : byIndex || byWord;
        });
      

      【讨论】:

        【解决方案4】:
        array.sort(function(a, b) {
            return a[1] > b[1];
        })
        

        或者如果你想要更严格的排序:

        array.sort(function(a, b) {
            return a[1] == b.[1] ? 0 : +(a[1] > b[1]) || -1;
        })
        

        确实有很多方法可以像这样对数组进行排序,我希望这能给你一个大致的想法!

        【讨论】:

          【解决方案5】:

          这是一个按字母顺序对文本进行排序的函数,并通过将所有内容小写来考虑大写单词。

          function sortText(arr, alphabetically) {
            if (alphabetically) {
              return arr.sort((a, b) => {
                if (a[0].toLowerCase() < b[0].toLowerCase()) return -1;
                if (a[0].toLowerCase() > b[0].toLowerCase()) return 1;
              });
            } else {
              return arr.sort((a, b) => {
                return a[1] - b[1]
              });
            }
          
          }
          
          let data = [
            ['He', 2],
            ['saw', 1],
            ['her', 2],
            ['walking', 1],
            ['so', 1],
            ['asked', 1]
          ];
          
          console.log(JSON.stringify(sortText(data, true)))
          console.log(JSON.stringify(sortText(data, false)))

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-18
            • 1970-01-01
            • 2020-11-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多