如何使用特定字母对字符串数组进行排序?

时间:2018-06-19 03:45:05

标签: javascript

我有一个strng数组。

e.g:

Exception in thread "main" java.lang.NumberFormatException: For input string: " 3" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:569) 
at java.lang.Integer.parseInt(Integer.java:615) 
at com.mkyong.properties.Getfromresources.main(Getfromresources.java:24) 
C:\Users\tamimwasif\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: 
Java returned: 1 BUILD FAILED (total time: 0 seconds) 

我知道如果我使用StrArray.Sort(),它将按字母顺序排序。但我想通过使用这个字母来排序=" jngmclqskrzfvbwpxdht"

我已经搜索过但我只找到使用HashTable来解决它的人。

可以用JS吗?

3 个答案:

答案 0 :(得分:4)

let order = 'jngmclqskrzfvbwpxdht'
let StrArray = ["hook", "javascript", "hour", "nemo", "case"];

StrArray.sort(function(a,b) {
  let firstAlphaOfParam1 = a.charAt(0);
  let firstAlphaOfParam2 = b.charAt(0);
  
  return order.indexOf(firstAlphaOfParam1) - order.indexOf(firstAlphaOfParam2); 
  
})
console.log(StrArray);

解决方案仅考虑仅按StrArray中元素的第一个字母排序。基本上我们采用第一个字母表并在jngmclqskrzfvbwpxdht中找到索引并比较它们

答案 1 :(得分:2)

你的排序词汇不包含你单词中的所有字母,因此不清楚如何继续使用'hour'和'hook'这样的单词,因为排序列表中没有'o'。您可以忽略它们,并在排序顺序中将列表中不存在的任何内容视为相等。您还应该测试类似的基础,如“钩子”和“钩子”

例如:

let StrArray = ["hook", "javascript", "nemo", "hours", "case", "hour", "houn"];
const sort_order = "jngmclqskrzfvbwpxdht"

StrArray.sort((a, b) => {
    let i = 0;
    while (i < a.length && i < b.length ){
        let a_i = sort_order.indexOf(a[i]),
            b_i = sort_order.indexOf(b[i]);
        if (a_i === b_i ) {
            i++
            continue
        }
        return a_i - b_i
    }
    // one is a substring of the other, sort by length
    return a.length - b.length
})

console.log(StrArray)

答案 2 :(得分:1)

我可以留下一小笔捐款,这段代码可以使用第一个字母排序。

&#13;
&#13;
var arr1 = ["hook", "javascript", "nemo", "case"];
var myAbc = 'jngmclqskrzfvbwpxdht';
var final_array = [];

for (i = 0; i < myAbc.length; i++) {
  for (j = 0; j < arr1.length; j++) {        
    if (arr1[j].charAt(0) == myAbc.charAt(i)) {        
      final_array.push(arr1[j]);      
    }
  }      
};

console.log(final_array);
&#13;
&#13;
&#13;