在第二个数组中排序单词

时间:2018-08-13 13:58:57

标签: javascript sorting

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

[['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();
}

*如果单词parmeter为true,则对数组进行字母排序;如果为false,则按右边的数字对数组进行排序*

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]]

5 个答案:

答案 0 :(得分: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];
});

如果这样做没有帮助,请使用“>”代替“-”。

请告诉我这是否对您有帮助。

答案 1 :(得分:1)

您对数组进行排序的依据是:

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);

答案 2 :(得分:1)

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

    <VBox maxHeight="-Infinity" maxWidth="300.0" minHeight="300.0" minWidth="-Infinity" prefHeight="300.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <StackPane prefHeight="75.0" prefWidth="10.0" >
         <children>
            <Label prefHeight="38.0" prefWidth="327.0" text="LABEL">
               <font>
                  <Font name="System Bold" size="18.0" />
               </font>
            </Label>
         </children></StackPane>
      <HBox alignment="CENTER" prefHeight="50.0" prefWidth="300.0" spacing="10.0">
         <children>
            <Button mnemonicParsing="false" prefWidth="50.0" text="7">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" prefWidth="50.0" text="8">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" prefWidth="50.0" text="9">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" prefWidth="50.0" text="/">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
         </children>
      </HBox>
      <HBox alignment="CENTER" prefHeight="50.0" prefWidth="300.0" spacing="10.0">
         <children>
            <Button mnemonicParsing="false" prefWidth="50.0" text="4">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" prefWidth="50.0" text="5">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" prefWidth="50.0" text="6">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" prefWidth="50.0" text="*">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
         </children>
      </HBox>
      <HBox alignment="CENTER" prefHeight="50.0" prefWidth="300.0" spacing="10.0">
         <children>
            <Button mnemonicParsing="false" prefWidth="50.0" text="3">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" prefWidth="50.0" text="2">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" prefWidth="50.0" text="1">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" prefWidth="50.0" text="-">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
         </children>
      </HBox>
      <HBox alignment="CENTER" prefHeight="50.0" prefWidth="300.0" spacing="10.0">
         <children>
            <Button mnemonicParsing="false" prefWidth="110.0" text="0">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" prefWidth="50.0" text="=">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" prefWidth="50.0" text="+">
               <font>
                  <Font size="18.0" />
               </font>
            </Button>
         </children>
      </HBox>
   </children>
</VBox>

答案 3 :(得分:0)

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;
})

真的有很多方法可以对数组进行排序,我希望这能给您一个大致的认识!

答案 4 :(得分:-1)

这是一个功能,可按字母顺序对文本进行排序,并通过小写所有内容来考虑大写字母。

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)))