【发布时间】:2017-05-15 15:15:18
【问题描述】:
我刚刚参加了一次编码面试(呃。),我这辈子都想不通。
问题:
双重排序
请编写一个接受字符串数组的 javascript 方法。每个元素可以是数字(“165”)或单词(“dog”)。您的方法应该对数组进行排序并返回,使得 (1) 单词按字母顺序排列,数字按数字顺序排列,(2) 数组中单词和数字的顺序相同。
示例(输入 => 输出):
排序(['5', '4', '狗', '1', '猫'])
=> ['1', '4', '猫', '5', '狗']
排序(['狗','猫'])
=> ['猫','狗']
排序('5', '3')
=> ['3', '5']
我能够编写一个按字母和数字对数组进行排序的基本排序函数,但我无法保持数组的原始顺序。这是我在时限内想出的:
var multiSortArray = [5, 4, 'dog', 1, 'cat'];
var multiSort = function(arr) {
var sortedArray = arr.sort();
console.log(sortedArray);
}
multiSort(multiSortArray);
which outputs: [1, 4, 5, "cat", "dog"]
任何帮助将不胜感激,我很恼火,我无法弄清楚这一点。我在 SO 中所能找到的只是订购 objects 我不确定我需要做什么(或者我可能会这样做。我不知道。)
谢谢大家!
【问题讨论】:
-
我相信它应该对字符串和数字进行排序,但将它们保留在原来的位置。所以 [3, 5, 'cat', 2, 'ant'] --> [2, 3, 'ant', 4, 'cat']。因此数字索引仍然是索引,与字符串相同,但除此之外它们按字母/数字排序。
-
@T.J.Crowder 我认为应该对数组进行排序,但是最初是字符串的数组位置应该保持为字符串,而最初保存整数的数组位置应该保持整数。跨度>
-
我认为正确的输出应该是 - [1, 4, 'cat', 5, 'dog']
-
@zenwraight OP 在他的问题中说,这是他的第一个例子。他是说他自己的输出是错误的。
-
他们真的把数字作为字符串给你了吗?
标签: javascript arrays sorting