Javascript-数组排序

Javascript-数组排序,javascript,jquery,Javascript,Jquery,我有两个阵列: keys_array = [2,4,5,8,9] values_array = ['two','four','five','eight','nine'] 我需要得到: #transitional result #values sorted alphabetically sorted_by_value_name_array = [ ['8','eight'], ['5','five'], ['4','four'], ['9','nine'], ['2','

我有两个阵列:

keys_array   = [2,4,5,8,9]
values_array = ['two','four','five','eight','nine']
我需要得到:

#transitional result
#values sorted alphabetically
sorted_by_value_name_array = [
  ['8','eight'],
  ['5','five'],
  ['4','four'],
  ['9','nine'],
  ['2','two']
]

#final result  
sorted_keys_array = [8,5,4,9,2]
如何使用javascript或jQuery实现这一点?

var-keys\u-array=[2,4,5,8,9];
var keys_array   = [2,4,5,8,9];
var values_array = ['two','four','five','eight','nine'];
var new_array = [];
for(var i=0; i<keys_array.length; i++){
    new_array.push([keys_array[i],values_array[i]]);
}

console.log(new_array.sort(function(a,b){ return a[1] < b[1] ? -1 : 1; }));
var值_数组=['2','4','5','8','9']; var new_数组=[]; 对于(VarI=0;i
VarKeys_数组=[2,4,5,8,9];
var值_数组=['2','4','5','8','9'];
var new_数组=[];

对于(var i=0;iAndy的回答很好,但是如果您的键和值没有完全对齐怎么办?那么您需要JavaScript才能将字符串解释为数字

我发现了一个可行的方法。通过在另一个函数中使用这个方法,我们可以有或多或少的数字单词,并将它们与相应的数字组合起来。它们甚至不需要在第一个位置对齐

// paste the toWords function here
function naturalCombine(numbers, words) {
    var numberCount = numbers.length,
        combined = [];
    for (var i=0; i < numberCount; i++) {
        var word = toWords(numbers[i]).trim(),
            found = words[words.indexOf(word)];
        if (found)
            combined.push([numbers[i], found]);
        else
            combined.push([numbers[i], "unknown"]);
    }
    return combined;
}

var keysArray = ["4", "62", "2", "94", "5", "9", "8", "87", "1674"];
var valuesArray = ["two", "one thousand six hundred seventy four", "four", 
                   "five", "eight", "nine", "eighty seven", "ninety four"];

var combined = naturalCombine(keysArray, valuesArray);
//将toWords函数粘贴到此处
函数自然组合(数字、单词){
var numberCount=numbers.length,
合并=[];
对于(变量i=0;i

检查Andy的答案很好,但是如果您的键和值没有完全对齐怎么办?那么您需要JavaScript才能将字符串解释为数字

我发现了一个可行的方法。通过在另一个函数中使用这个方法,我们可以有或多或少的数字单词,并将它们与相应的数字组合起来。它们甚至不需要在第一个位置对齐

// paste the toWords function here
function naturalCombine(numbers, words) {
    var numberCount = numbers.length,
        combined = [];
    for (var i=0; i < numberCount; i++) {
        var word = toWords(numbers[i]).trim(),
            found = words[words.indexOf(word)];
        if (found)
            combined.push([numbers[i], found]);
        else
            combined.push([numbers[i], "unknown"]);
    }
    return combined;
}

var keysArray = ["4", "62", "2", "94", "5", "9", "8", "87", "1674"];
var valuesArray = ["two", "one thousand six hundred seventy four", "four", 
                   "five", "eight", "nine", "eighty seven", "ninety four"];

var combined = naturalCombine(keysArray, valuesArray);
//将toWords函数粘贴到此处
函数自然组合(数字、单词){
var numberCount=numbers.length,
合并=[];
对于(变量i=0;i
检查变量键数组=[2,4,5,8,9], 值_数组=['2','4','5','8','9']; var svalues=values\u array.slice().sort(),//复制数组并对其排序 skeys=[]; for(var i=0,s=svalues.length;i

您需要使用扩展阵列原型,以便它与不支持它的浏览器一起工作。

var-keys\u-array=[2,4,5,8,9],
值_数组=['2','4','5','8','9'];
var svalues=values\u array.slice().sort(),//复制数组并对其排序
skeys=[];
for(var i=0,s=svalues.length;i


您需要使用扩展阵列原型,使其能够与不支持它的浏览器一起工作。

我看不到任何排序模式?@Shef我假设他需要组合阵列,按值排序并返回已排序阵列的键。值应按字母排序。看不到任何排序模式吗?@Shef我假设他需要组合数组,按值排序并返回已排序数组的键。值应按字母Betyea排序,但带有数字单词的示例可能只是为了解释他的问题,在他的实际代码中,他使用了一些其他值。:@Andy,可能。希望其他人会使用我的答案;)是的,但数字单词的例子可能只是为了解释他的问题,在他的真实代码中,他使用了一些其他值@安迪,可能吧。希望其他人能使用我的答案;)