将数组前面的项添加到数组的末尾

时间:2013-08-09 17:16:40

标签: javascript jquery

这看起来很简单。我不确定如何确保它的混乱。

我有一份清单。我想把前三个项目放在前面,然后将它们添加到后面。我不想从前面删除项目。我希望他们在前面和后面。

所以我的列表就像这样开始

[1,2,3,4,5,6,7,8,9,10]

在我完成之后会看起来像这样

[1,2,3,4,5,6,7,8,9,10,1,2,3]

此列表存储在<ul>

这是我的代码

_options.slides = $.makeArray($('.slide'));
var el = [];
$.each(_options.slides.splice(0, 3), function (x, item) {
     el.push(item);
});
$('#video-triggers').clone().append(el);  //break point here

有些代码可能是不必要的,因为我已经玩了太久了。如果我在克隆追加行上设置断点并在控制台中执行代码(开发工具),那么结果就是

enter image description here

修改

克隆和追加行有我的结果,但容器没有这些结果吗?

以下是没有克隆的结果

enter image description here

编辑2

我也试过这个

$('#video-triggers').append(_options.slides.concat(el))

4 个答案:

答案 0 :(得分:2)

您的操作顺序和变量混淆了。 。 。您正在克隆目标<ul>,而不是要复制的<li>。试试这个 。 。

改变这个:

$('#video-triggers').clone().append(el);

。 。 。对此:

el.clone().appendTo($('#video-triggers'));

答案 1 :(得分:1)

那是因为您克隆它然后您将新元素添加到克隆中(并且您的页面上不存在克隆)。

答案 2 :(得分:1)

使用unshift();将项目推送到数组前面。

$.each(_options.slides.splice(0, 3), function (x, item) {
     el.push(item);
     el.unshift(item);
});

答案 3 :(得分:0)

a = [1,2,3,4,5,6,7,8,9,10];
b = a.concat(a.slice(0,3));
console.log(b);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3]