Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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:按值将数组拆分为多个数组_Javascript_Arrays_Split - Fatal编程技术网

Javascript:按值将数组拆分为多个数组

Javascript:按值将数组拆分为多个数组,javascript,arrays,split,Javascript,Arrays,Split,例如,我有一个数组: const array= ['a', 'X', 'c', 'X', 'e', 'f', 'X'] 我想在元素=X的每个点拆分数组,所以之后我应该有6个数组: ['a'], ['X'], ['c'], ['X'], ['e', 'f'], ['X'] 如果某个字符或字符序列(例如,出于演示代码的目的)不会出现在值中,则可以使用该字符序列加入数组,然后使用带有捕获组的正则表达式在X上拆分以保留X值,然后再次在字符序列上拆分: 常量数组=['a'、'b'、'X'、'cd'、

例如,我有一个数组:

const array= ['a', 'X', 'c', 'X', 'e', 'f', 'X']
我想在元素=X的每个点拆分数组,所以之后我应该有6个数组:

['a'],
['X'],
['c'],
['X'],
['e', 'f'],
['X']

如果某个字符或字符序列(例如,出于演示代码的目的)不会出现在值中,则可以使用该字符序列加入数组,然后使用带有捕获组的正则表达式在X上拆分以保留X值,然后再次在字符序列上拆分:

常量数组=['a'、'b'、'X'、'cd'、'X'、'e'、'f'、'X'] 释放=阵列 .join//合并为字符串 .split/?:^ | X?:|$///在X上分割,但保留它们 .filterBoolean//删除空值 .mapv=>v.split;//分开
控制台。注销 如果某个字符或字符序列(例如,出于演示代码的目的)不会出现在值中,则可以使用该字符序列加入数组,然后使用带有捕获组的正则表达式在X上拆分以保留X值,然后再次在字符序列上拆分:

常量数组=['a'、'b'、'X'、'cd'、'X'、'e'、'f'、'X'] 释放=阵列 .join//合并为字符串 .split/?:^ | X?:|$///在X上分割,但保留它们 .filterBoolean//删除空值 .mapv=>v.split;//分开
控制台。注销 从最后找到的X位置开始获取区块的索引,推送切片区块和['X']

让数组=['a','X','c','X','e','f','X'] 常量chunkX=数组=>{ if!array.length返回数组 设i=0,j 常数arr=[] whilej=array.indexOf'X',i!=-1{ //i!==j,以防止在两个连续的“X”时生成空白数组 i!==j&&arr.pusharray.slicei,j arr.push[array[j]] i=j+1 } ificonsole.logJSON.stringifychunkXarrayindexOf从最后找到的X位置开始获取块,推送切片块和['X']

让数组=['a','X','c','X','e','f','X'] 常量chunkX=数组=>{ if!array.length返回数组 设i=0,j 常数arr=[] whilej=array.indexOf'X',i!=-1{ //i!==j,以防止在两个连续的“X”时生成空白数组 i!==j&&arr.pusharray.slicei,j arr.push[array[j]] i=j+1 } ifi 常量数组=[a,X,c,X,e,f,X,n]; const split=arr,sep=>{ 常量输出=[]; const-win=[]; arr.forEachitem=>{ 如果项目===sep{ 输出。推送[…赢],[项目]; win.length=0; }否则{ win.pushitem; } }; 如果win.length>0{ 输出。推送[…赢]; } 返回输出; }; console.logsplitarray,X 使用临时窗口来维护分隔符之间的项目

常量数组=[a,X,c,X,e,f,X,n]; const split=arr,sep=>{ 常量输出=[]; const-win=[]; arr.forEachitem=>{ 如果项目===sep{ 输出。推送[…赢],[项目]; win.length=0; }否则{ win.pushitem; } }; 如果win.length>0{ 输出。推送[…赢]; } 返回输出; };
console.logsplitarray,X;出于好奇,你为什么要这样做?出于好奇,我不能让它工作,你为什么要这样做?我不能让它工作你不需要加入角色。对空字符串进行连接具有相同的结果,而不必担心选择arrayEg数组中没有的内容。join.split/X/.filterBoolean.maps=>[…s]@Phil我使用连接字符的原因是,如果值实际上超过一个字符;如果数组实际上是['ab',X',cd',X',e',f',X'],那么在没有连接字符的情况下得到[[a,b],[X],[c,d],[X],[e,f],[X]@user120242在上面睡觉让我明白了你的意思。我已经相应地更新了代码,注意它需要?:^ |而不是以X作为array@pangpp我对答案进行了编辑,对代码进行了改进,并帮助避免了一些可能有问题的边缘情况。您实际上不需要连接字符。在一个空字符串上进行连接会得到相同的结果,而不必担心选择不需要的内容
sn未出现在arrayEg array.join.split/X/.filterBoolean.maps=>[…s]@Phil我使用连接字符的原因是为了防止值实际上超过一个字符;如果数组实际上是['ab',X',cd',X',e',f',X'],那么在没有连接字符的情况下得到[[a,b],[X],[c,d],[X],[e,f],[X]@user120242在上面睡觉让我明白了你的意思。我已经相应地更新了代码,注意它需要?:^ |而不是以X作为array@pangpp我对答案进行了编辑,对代码进行了改进,并帮助避免了一些可能有问题的边缘情况。