的另一個數組的數組說我有一個數組:[0,3,4,2,5,1]
JavaScript的 - 排序基於整數
我想要做的就是數組排序,如:
["one", "two", "three", "four", "five", "six"]
,這樣的順序對應於第一個數組。
這將是輸出:
["one", "four", "five", "three", "six", "two"]
是否有一個簡單的方法來做到這一點?
的另一個數組的數組說我有一個數組:[0,3,4,2,5,1]
JavaScript的 - 排序基於整數
我想要做的就是數組排序,如:
["one", "two", "three", "four", "five", "six"]
,這樣的順序對應於第一個數組。
這將是輸出:
["one", "four", "five", "three", "six", "two"]
是否有一個簡單的方法來做到這一點?
你可以做這樣的事情:
function getSorted(arr, sortArr) {
var result = [];
for(var i=0; i<arr.length; i++) {
result[i] = arr[sortArr[i]];
}
return result;
}
注意:這假定您傳遞的數組大小相等,如果情況不是這樣,您需要添加一些額外的檢查。
感謝尼克,這個作品完美! – 2010-10-28 21:54:55
不蘇爾你如何讓你的第一個數組,但你可以使用對象的數組,而不是[0,3,4,2,5,1]
:
var arr = [
{n:0, s:'one'},
{n:3, s:'four'},
{n:4, s:'five'},
{n:2, s:'three'},
{n:5, s:'six'},
{n:1, s:'two'}
]
,並避免對其進行處理。
orderedArray= function(arr,order){
return order.map(function(itm){return arr[itm]});
}
var sequence= [0, 3, 4, 2, 5, 1],arr=["one","two","three","four","five","six"]
arr=new orderedArray(arr,sequence);
/* returned value: (Array)
one,four,five,three,six,two
*/
//可以使順序排列的未編制索引的屬性, //並調用array.ordered()
Array.prototype.ordered= function(order){
var arr= this;
order=order || this.order;
return order.map(function(itm){
return arr[itm];
});
}
var arr= ["one","two","three","four","five","six"],
sequence= [0, 3, 4, 2, 5, 1];
arr.order=sequence;
arr.ordered()
/* returned value: (Array)
one,four,five,three,six,two
*/
class test1
{
public static String[] sort(int[] array,String[] str)
{
String[] out=new String[str.length];
for(int i=0;i<str.length;i++)
{
out[i]=str[array[i]];
}
return out;
}
}
這是Java,但問題要求JavaScript。如果你製作這個僞代碼,它可能會有所幫助。 – 2014-12-08 16:07:15
有人問我這一個電話採訪。然後在不創建另一個數組的情況下,假設數組非常大。我不知道這是否是答案,因爲我無法接聽電話(該死!),但這是我想出的。
var my_obj_array = ['a', 'b', 'c', 'd'];
var my_indicies = [3, 1, 0, 2];
// desired result ['d', 'b', 'a', 'c']
var temp = {};
for (var i = 0; i < my_indicies.length; i++) {
temp[i] = my_obj_array[i]; // preserve
var j = my_indicies[i];
if (j in temp) {
my_obj_array[i] = temp[j];
delete temp[j];
} else {
my_obj_array[i] = my_obj_array[j];
}
}
你的問題是混亂的,因爲它什麼都沒有做與排序。您保持數組的順序相同,只需將數組的每個元素映射到另一個數組的元素即可。 – Amnon 2010-10-28 21:20:33