我想合併遞歸陣列..串連陣列遞歸
我的代碼是:
var allitemorder;
var itemorder;
$('.divclass').each(function() {
itemorder = $(this).sortable('toArray');
allitemorder = $.merge([], itemorder);
});
請幫助。
我想合併遞歸陣列..串連陣列遞歸
我的代碼是:
var allitemorder;
var itemorder;
$('.divclass').each(function() {
itemorder = $(this).sortable('toArray');
allitemorder = $.merge([], itemorder);
});
請幫助。
你只需要輕微的變化,這樣的:
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)
需要從秒數組中的元素,並將它們在第一 ,所以你需要傳遞你想要積累的數組作爲第一個參數。
我喜歡速記版。 – Deefjuh 2010-07-19 11:57:38
allitemorder = $.merge([], itemorder);
看起來你正在用itemorder重置allitemorder。 所以不應該是這樣:
allitemorder = $.merge(allitemorder, itemorder);
編輯: 尼克說:$.merge(allitemorder, itemorder);
就足夠了(無需再次設置變量allitemorder)。我會完全用他的速記解決方案。
嘗試這種情況:
var array = $('.divclass').map(function() {
return $(this).sortable('toArray');
}).get();
返回的數組中.map()
自動合併數組到所創建的jQuery對象。然後.get()
檢索最終數組。
這將返回一個數組的數組;) – 2010-07-19 11:56:18
@Nick - 我很肯定的是,當'.MAP()'接收和陣列,它自動將其合併到jQuery對象陣列。有一次我真的想要一個數組,我發現我只有一個數組。 – user113716 2010-07-19 11:58:52
哇,你是對的,這是核心的錯誤海事組織,它不應該做的concat,這是一個處理返回數組的不當明確。我從來沒有嘗試過這個,但這絕對不是預期的結果。 +1爲此,但我實際上*希望*它在未來的版本中打破,沒有進攻:) – 2010-07-19 12:03:11
什麼是「可排序」?什麼是「合併」? – SilentGhost 2010-07-19 11:51:37
@SilentGhost: 排序列出清單到拖動列表(http://docs.jquery.com/UI/Sortable的例子) 合併(ARR1,ARR2)合併背後ARR1 ARR2。 (http://api.jquery.com/jQuery.merge/) – Deefjuh 2010-07-19 12:06:08