Javascript – 数组排序
我有两个数组:
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_array = [2,4,5,8,9]; var values_array = ['two','four','five','eight','nine']; var new_array = []; for(var i=0; i
Andy的答案很棒,但是如果你的键和值没有完全对齐怎么办? 然后,您需要JavaScript才能将字符串解释为数字。
我找到了Stephen Chapman对数字转换器的工作词 。 通过在另一个函数中使用它,我们可以有或多或少的任何数字,并将它们与相应的数字组合。 而且他们甚至不必首先对齐。
// 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);
检查jsFiddle上的测试用例
var keys_array = [2,4,5,8,9], values_array = ['two','four','five','eight','nine']; var svalues = values_array.slice().sort(), // copy array and sort it skeys = []; for(var i = 0, s = svalues.length; i < s; i++){ skeys.push(keys_array[values_array.indexOf(svalues[i])]); }
演示
您需要使用indexOf()
扩展数组原型,以便与不支持它的浏览器一起使用。