【发布时间】:2015-05-01 04:52:08
【问题描述】:
我有多个对象,其中包含一个名为“num”的字段。 Num 可以是 1000000000 到 10000000005 之间的任何数字。我想确保如果我有 x 个列表,则所有列表都需要根据“num”属性按升序排列在 array1 中。
如果我从这样的数组开始"
array1": [{item:23532532, num:1000000520},{item:23523, num:1000000620},{item:346346432, num:1000000620}]
我有第二个数组
"array2": [{item:23532, num:....},{item:3623, num:....}]
假设array2按“num”排序,是否更有效:
1) Add Then Sort Whole - 循环遍历“array2”中的每个项目并将其添加到“array1”的末尾,然后对整个数组的“num”属性执行内置的“排序”函数?
2) Insert Into Right Place - 循环遍历“array2”中的每一项并使用“if”条件检查“num”值是否大于“array2”中的当前项,如果是,则插入该索引之前的元素通过“拼接”。 (未使用 javascript 内置数组排序)
或者有没有更有效的方法?伪代码或示例代码是一个加号。
【问题讨论】:
-
示例中 num 的值(例如 1000000520)似乎超出了指定范围(1000000000 到 1000000005)。
-
此外,您在#2 中描述的是 一种:) en.wikipedia.org/wiki/Insertion_sort
-
splice可能效率很低。我会先使用简单的解决方案(concat + sort),然后如果这还不够好,请使用 sort(small) + merge -
我将使用 splice(或 concat)连接两个数组,然后对整个数组进行排序。但是对jsperf 进行几分钟的测试会回答你的问题。我希望拼接单个成员只有在您不时添加一些成员时才有意义。
-
@RobG:您的意思可能是
push或concat,而不是splice?
标签: javascript arrays sorting