2013-02-02 177 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