Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript array.concat()的问题_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

Javascript array.concat()的问题

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返回数组

解决这个问题的方法是: 接收到一个数据流,需要反转

每个段的长度为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%!重要; 顶部:自动;
} 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返回一个数组