我认为代码会解释它,但我正在尝试将jquery对象列表分割成一个数组,然后将它们连接到另一个数组上,多次。无论如何在.each函数中我得到了lis变量中的元素,但是当我尝试将它们切片并连接到listItemArray时,它无法正常工作。我假设我正在失去范围或存在一些约束性问题,但我无法弄清楚它是什么。谢谢您的帮助。另外我知道有一个jquery.slice方法,但如果可能的话我想保留它。
var updateSection7 = function(desired) {
var section = $('#' + _me.UUID + ' .section7yAxis');
var showedList = section.find('ul:not(:hidden)');
var listItemArray = [];
var _slice = Array.prototype.slice;
showedList.each(function(ind,el){
var lis = $(el).find('.control-group');
if(lis.length>1){
listItemArray.concat(_slice.call(lis));
}
});
}
更新:在这里,我包括了解决问题的推送和连续版本,并且消除了每个请求浪费的cpu时间。
var updateSection7 = function(desired) {
var lis = $('#' + _me.UUID + ' .section7yAxis ul:not(:hidden) .control-group');
var listItemArray = [];
var concatTester = [];
var _slice = Array.prototype.slice;
var _push = Array.prototype.push;
//these end up doing the same thing
_push.apply(listItemArray, _slice.call(lis));
concatTester = concatTester.concat(_slice.call(lis));
}
答案 0 :(得分:3)
concat
不会改变原始数组。它返回新数组。
试试这个:
listItemArray = listItemArray.concat(_slice.call(lis));