我想合并递归数组..
我的代码是:
var allitemorder;
var itemorder;
$('.divclass').each(function () {
itemorder = $(this).sortable('toArray');
allitemorder = $.merge([], itemorder);
});
请帮助。
答案 0 :(得分:3)
你需要稍作改动,如下:
var allitemorder = [], itemorder;
$('.divclass').each(function () {
itemorder = $(this).sortable('toArray');
$.merge(allitemorder, itemorder);
});
或更短的:
var allitemorder = [];
$('.divclass').each(function () {
$.merge(allitemorder, $(this).sortable('toArray'));
});
$.merge(first, second)
获取第二个数组中的元素并将它们放在 first 中,因此您需要将要累积的数组传递给每次都是第一个论点。
答案 1 :(得分:2)
试试这个:
var array = $('.divclass').map(function () {
return $(this).sortable('toArray');
}).get();
在.map()
中返回一个数组会自动将数组合并到创建的jQuery对象中。然后.get()
检索最终的数组。
答案 2 :(得分:1)
allitemorder = $.merge([], itemorder);
您似乎正在使用itemorder重置allitemorder。 所以不应该这样:
allitemorder = $.merge(allitemorder, itemorder);
编辑:
正如尼克所说:$.merge(allitemorder, itemorder);
就足够了(不再设置变量allitemorder)。我会完全采用他的速记解决方案。