2013-02-02 238 views
2

试图安排基于另一个阵列排列基于另一

​​

的量级的阵列是否有可能实现,而无需使用附加的temp[]阵列的相同1个阵列?

+0

在JavaScript中有一个'sort'方法...这是什么目的?数组是否包含相同的数据,但顺序不同? – elclanrs

+1

是的:http://stackoverflow.com/questions/7365814/in-place-array-reordering 为什么你想这样做,虽然超越了我:)。 – Reck

+0

我知道你已经有了可能的答案,但是你能给出两个数组都是什么样子的例子吗? – bfavaretto

回答

1

首先我想说明的是,new是一个可能作为变量名避免使用的关键字。

jQuery的map会让你这么做,尽管它很可能在内部使用一个临时变量。该项目的好处在于它会继续改进,即使该功能目前效率低下,以后可能会更高效,而无需将其称为不同的方式。

这里是一个一行,如果你不反对使用jQuery:

var oldArray = ['a', 'b', 'c', 'd'], 
    newOrder = [1, 3, 0, 2]; 

oldArray = jQuery.map(newOrder, function(val) { return oldArray[val]; }); 

这应该重新排序oldArray['b', 'd', 'a', 'c']。但是,您仍然用新的数组对象替换oldArray。这真的取决于你想要完成的事情。我不认为你能够完全避免临时变量,但是根据你是为了简单性,速度效率,内存效率还是其他原因而有不同的解决方案。

+1

有一个细微的差别在[.map](http://api.jquery.com/map/)和[$ .map](http://api.jquery.com/jQuery.map/)之间:前者返回一个jQuery对象,而不是数组。是的,有时它会咬你 - 例如当你试图序列化它的结果时。 – raina77ow

+0

哎呀!感谢您的支持。 – redbmk