【发布时间】:2015-02-25 05:13:35
【问题描述】:
尝试根据自定义字母对字符串数组进行排序。那里可能有一些不必要的代码,但那是几个不同的迭代混合在一起。
我正在对首字母进行基本排序,如果这不起作用,我调用深度排序函数并开始处理字母。但是结果只是按第一个字母排序,后面的排序似乎是随意的。
有什么帮助吗?
var wordArray = ['apple', 'abbot', 'aatrophy', 'banana', 'berry', 'cherrypie', 'cherry', 'candy', 'grapefruit', 'pear', 'pizza', 'zebra', 'cigarette', 'guitar'];
var wordToLetterArray = [];
// var sortingString = "kwfhjrsbdtqmxaopzvieulgcny";
var sortingString = "abcdefghijklmnopqrstuvwxyz";
var deepSort = function(wordArray1, wordArray2) {
var forLoopIterations = 0;
if (wordArray1 && wordArray2) {
if (wordArray1.length > wordArray2.length) {
forLoopIterations = wordArray2.length;
} else {
forLoopIterations = wordArray1.length;
}
for (var i = 0; i <= forLoopIterations; i++) {
if (sortingString.indexOf(wordArray1[i]) > sortingString.indexOf(wordArray2[i])) {
return -1;
} else if (sortingString.indexOf(wordArray1[i]) < sortingString.indexOf(wordArray2[i])) {
return 1
} else {
if (i >= forLoopIterations) {
if (wordArray1.length > wordArray2.length) {
return 1;
} else if (wordArray1.length < wordArray2.length) {
return -1
} else {
return 0
}
} else {
}
}
};
} else {
return 0;
}
}
var populateWordToLetterArray = function() {
for (var i = 0; i <= wordArray.length - 1; i++) {
wordToLetterArray.push([]);
for (var x = 0; x <= wordArray[i].length - 1; x++) {
wordToLetterArray[i].push(wordArray[i][x]);
};
};
sortWordArraybyFirstLetter();
}
var sortWordArraybyFirstLetter = function sortWordArraybyFirstLetter() {
wordArray.sort(function(a, b) {
var aIndex = sortingString.indexOf(a[0]);
var bIndex = sortingString.indexOf(b[0]);
if (aIndex > bIndex) {
return 1;
} else if (aIndex < bIndex) {
return -1;
} else {
return deepSort(wordToLetterArray[wordArray.indexOf(a)], wordToLetterArray[wordArray.indexOf(b)]);
}
})
}
populateWordToLetterArray();
console.log(wordArray);
console.log(wordToLetterArray);
【问题讨论】:
-
“我正在对首字母进行基本排序,如果这不起作用 [...]” – 这对我来说似乎没有什么意义;为什么不使用“真正的”排序功能开始呢?如果这已经可以根据第一个字母来决定,那么这应该与您的更复杂和更复杂的方法在性能方面没有区别......
-
看起来您只需在深度排序中将
return 1;与return -1;交换即可。 -
已经试过swap return
-
喜欢这个? jsfiddle.net/wLmgyc83
-
还是不做看看苹果和方丈
标签: javascript arrays sorting