js数组进行处理的时候碰到的有关问题,很神奇

js数组进行处理的时候碰到的问题,很神奇
直接上代码

function arr_del(arr, s, e){
var result=arr, i=0, j=0;
(function(){
if(i<s){
result.shift();
i++;
arguments.callee()
}
})();
(function(){
if(j<e){
result.pop();
j++;
arguments.callee()
}
})();
return result
}

function arr_combine(arr, l, limit){
var Arrays=[], result=[];
console.log(arr);   //  为何此处输出在控制台的结果是  [4, 5, 6, 7, undefined × 6] 
for(var i=0;i<l;i++){
Arrays[i]=arr_del(arr, i, l-i-1);
}
}
arr_combine([1,2,3,4,5,6,7,8,9,10],3,7);


------解决方案--------------------
楼主我运行的结果是[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
不知道你是想要实现什么功能,是数组截取还是数组连接
------解决方案--------------------
不相干 没用的代码删掉
断点调试
 
------解决方案--------------------
你 console.log(arr); 时 Arrays[i]=arr_del(arr, i, l-i-1); 还没执行呢

------解决方案--------------------
combine 是组合
求组合可以这么写
// combination 组合
function combine(arr, num) {
  var len = arr.length;
  if(~~num == 0) num = len;
  var mask = [];
  
  for(var i=0; i<len; i++) mask.push( i<num ? 1 : 0);
  var res = [];

  do {
    var t = [];
    for(i=0; i<len; i++) if(mask[i]) t.push(arr[i]);
    res.push(t);
    
    s = 0;
    for(i=0; i<len-1; i++) {
      if(mask[i] == 0) s++;
      if(s == len - num) break;

      if(mask[i] == 1 && mask[i+1] == 0) {
        mask[i] = 0;
        mask[i+1] = 1;
        for(; i>0; i--) {
          if(mask[i] && mask[i-1] == 0) {
            mask[i-1] = 1;
            mask[i] = 0;
          }
        }
        break;
      }
    }
  }while(s < len - num);
  return res;
}

arr  = [1,2,3,4,5];
r = combine(arr,3);

[[1,2,3],[1,2,4],[1,3,4],[2,3,4],[1,3,5],[2,3,5],[1,4,5],[2,4,5],[3,4,5]]