2016-09-30 42 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);