是浏览器的bug? 换了个浏览器发现输出结果是对的
用360输出到控制台里就成了但是如果用alert弹出结果的话又是对的。感觉应该是在arr_del函数中result对arr数组的引用导致的,但是输出的代码又是在arr_del函数前执行,还是想不通。慢点结贴,坐等大牛分析。
用360输出到控制台里就成了但是如果用alert弹出结果的话又是对的。感觉应该是在arr_del函数中result对arr数组的引用导致的,但是输出的代码又是在arr_del函数前执行,还是想不通。慢点结贴,坐等大牛分析。
求组合可以这么写// 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]]