Javascript array.concat()的问题
我正在尝试使用递归调用concat返回数组 解决这个问题的方法是: 接收到一个数据流,需要反转 每个段的长度为8位,这意味着这些段的顺序需要颠倒,例如: 11111111 00000000 000011111 10101010 字节1字节2字节3字节4 应成为: 10101010 000011111 00000000 11111111 字节4字节3字节2字节1 位的总数将始终是8的倍数 尝试不同的事物组合真的 函数dataReversedata{ //将传入数组拆分为数组值,每个数组值由8个数字组成。 //var octGroups=data.length/8; var结果=[]; //递归调用 函数随机数组{ 让输入=数组; //基本情况 ifinput.length==0{ 返回结果; }否则{ //一次使用8个值计算结果 设cache=input.splice-8,8; result.concatcache; 回输; } 返回结果; } var=shufflerdata; //基本情况是data.length==0返回结果else //反向迭代数组,合并到新的返回数组 //返回结果 反向返回; } 控制台.logdataReverse[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0] concat返回一个数组-分配结果: 函数dataReversedata{ //将传入数组拆分为数组值,每个数组值由8个数字组成。 //var octGroups=data.length/8; var结果=[]; //递归调用 函数随机数组{ 让输入=数组; //基本情况 如果input.length==0{ 返回结果; }否则{ //一次使用8个值计算结果 让cache=input.splice-8,8; 结果=result.concatcache; 回输; } 返回结果; } var=shufflerdata; //基本情况是data.length==0返回结果else //反向迭代数组,合并到新的返回数组 //返回结果 反向返回; } 设reversed=dataReverse[1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0]; //以8为一组进行漂亮打印的代码 反转=反转。还原AC,curr,i=>{ 常数c=Math.floori/8; acc[c]=[]混凝土[c]| |[],当前; 返回acc; }, []; console.logreversed.mape=>e.join; .作为控制台包装{ 最大高度:100%!重要; 顶部:自动;Javascript array.concat()的问题,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我正在尝试使用递归调用concat返回数组 解决这个问题的方法是: 接收到一个数据流,需要反转 每个段的长度为8位,这意味着这些段的顺序需要颠倒,例如: 11111111 00000000 000011111 10101010 字节1字节2字节3字节4 应成为: 10101010 000011111 00000000 11111111 字节4字节3字节2字节1 位的总数将始终是8的倍数 尝试不同的事物组合真的 函数dataReversedata{ //将传入数组拆分为数组值,每个数组值由8个数
} concat返回一个新数组,您需要将其分配回结果
result = result.concat(cache);
如果希望每个字节都是8个字符的字符串,可以使用join
result = result.concat(cache.join(''));
函数dataReversedata{
//将传入数组拆分为数组值,每个数组值由8个数字组成。
//var octGroups=data.length/8;
var结果=[];
//递归调用
函数随机数组{
让输入=数组;
//基本情况
如果input.length==0{
返回结果;
}否则{
//一次使用8个值计算结果
让cache=input.splice-8,8;
结果=result.concatcache;
回输;
}
返回结果;
}
var=shufflerdata;
//基本情况是data.length==0返回结果else
//反向迭代数组,合并到新的返回数组
//返回结果
反向返回;
}
logdataReverse[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0] 使用join而不是concat
函数dataReversedata{
//将传入数组拆分为数组值,每个数组值由8个数字组成。
//var octGroups=data.length/8;
var结果=[];
//递归调用
函数随机数组{
让输入=数组;
//基本情况
如果input.length==0{
返回结果;
}否则{
//一次使用8个值计算结果
让cache=input.splice-8,8;
result.pushcache.join;
回输;
}
返回结果;
}
var=shufflerdata;
//基本情况是data.length==0返回结果else
//反向迭代数组,合并到新的返回数组
//返回结果
反向返回;
}
logdataReverse[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0] 你可以将数组分成8块,然后使用and。这样做的好处是,您可以得到一个很好的功能性、可重用、可链接且可读性很强的代码 考虑这一点: 设数据=[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,0] //按数字块数组的实用函数 const chunkBy=arr,by=2=>arr.reducer,c,i=>i%by==0?r、 按[c]:r[r.length-1]=[…r[r.length-1],c],r,[] 让结果=chunkBydata,8.reverse.flat console.log'in:',data.join console.log'out:',result.joinconcat返回一个数组