2016-09-30 43 views
-3

我有這樣如何在Javascript中重新排列數組中的項目?

var list = [ 'dog', 'cat', 'horse' 'rabbit'] 

數組現在,我想在數組中刪除一個項目,貓。

list.splice(1, 1) 

現在我的陣列看起來像這樣

list = [ 'dog', 'horse', 'rabbit' ] 

我想要做的就是它的基礎上已刪除的項目重新排序,因此,例如

list = [ 'horse', 'rabbit', 'dog'] 

將如何我在Javascript中實現了這一點?

+11

「它基於已刪除的項進行重新排序」←這是什麼意思? – JLRishe

+0

如此以來貓已被刪除,而不是顯示「狗」,「馬」,「兔」 - 我想顯示「馬」,'兔「狗」 - 狗是最後 – anon

+3

我投票「最令人困惑的問題 - 九月「 – NoobishPro

回答

2

也許這樣的事情什麼標準。

var list = [ 'dog', 'cat', 'horse', 'rabbit'] 
 

 
function reorderSlice(index) { 
 
    var start = list.slice(0, index) 
 
    var end = list.slice(index + 1) 
 
    return end.concat(start) 
 
} 
 

 
console.log(reorderSlice(1))

+0

謝謝,這是完美的 – anon

+0

實際上它現在好多了。沒有必要拼接,因爲我們正在對陣列進行兩次切片 – synthet1c

-2

您可以使用Array.sort()函數來執行排序根據你想使用< =>樣式的功能

var numbers = [4, 2, 5, 1, 3]; 
numbers.sort(
    function(left, right) { 
     return left - right; 
    } 
); 
// returns: 1, 2, 3, 4, 5 

jsFiddle

0

如果您想在新列表中刪除的元素之後啓動,並追加一切都是之前的項目:

var list = [ 'dog', 'cat', 'horse', 'rabbit'] ; 
var itemIndex = 1; // Index of 'cat' (removed item) 
list = list.slice(itemIndex+1).concat(list.slice(0,itemIndex)); 

console.log(list); // ["horse", "rabbit", "dog"] 
0

這應該這樣做。代碼將所有項目拼接到第n個位置。然後將它們添加回列表的結尾,除了第n個項目。

var removed = list.splice(0, n); 
list.push(removed.splice(0, removed.length-1)); 
0

有趣的是,你表達問題的方式......你可能會這樣做,

function funkyDeleteItem(a,i){ 
 
    return a.slice(i+1).concat(a.slice(0,i)); 
 
} 
 

 
var a = [ 'dog', 'cat', 'horse', 'rabbit'], 
 
    b = funkyDeleteItem(a,1); 
 
console.log(b);