js数组进行处理的时候碰到的有关问题,很神奇
js数组进行处理的时候碰到的问题,很神奇
直接上代码
------解决方案--------------------
楼主我运行的结果是[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
不知道你是想要实现什么功能,是数组截取还是数组连接
------解决方案--------------------
不相干 没用的代码删掉
断点调试
------解决方案--------------------
你 console.log(arr); 时 Arrays[i]=arr_del(arr, i, l-i-1); 还没执行呢
------解决方案--------------------
combine 是组合
求组合可以这么写
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]]
直接上代码
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]]