Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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_For Loop_Split - Fatal编程技术网

Javascript 在按空格分割的较小数组中打断数组

Javascript 在按空格分割的较小数组中打断数组,javascript,arrays,for-loop,split,Javascript,Arrays,For Loop,Split,我有一个字符串'1223334444456',我想做一个像这样的数组-[[1,22],[22333],[4444,5],[5,6] 我试着用。。。循环,但没有帮助 let str = ' 1 22 333 4444 5 6 '; let arr = []; for(let i = 0; i < str.length; i++) arr.push(str.slice(str.indexOf(' ', i),str.indexOf(' ',i+1))); 而不是: [[1, 22],

我有一个字符串'1223334444456',我想做一个像这样的数组-[[1,22],[22333],[4444,5],[5,6]

我试着用。。。循环,但没有帮助

let str = ' 1 22 333 4444 5 6 ';
let arr = [];

for(let i = 0; i < str.length; i++)
  arr.push(str.slice(str.indexOf(' ', i),str.indexOf(' ',i+1)));
而不是: [[1, 22], [22, 333], [4444, 5], [5, 6]];


为什么错了?有人知道怎么做吗?

因为每个数字之间的分隔符在整个字符串中是一致的,所以不可能做您想做的事情。您需要为每个数字使用一个分隔符,然后为组使用不同的分隔符

比如,

设str='122334444,5 6'; 让组=str.split,; 设arr=[]; 对于let i=0;i<组长;我++ arr.pushgroups[i].拆分; console.logarr 也许是这样:

设str='1223334444456'; 设arr=[]; 设str_arr=str.split'; forlet键在str_arr中{ 如果有[钥匙]={ 让我们添加_arr=[]; 添加_arr.pushparseIntstr_arr[key],10; 让next_key=parseIntkey,10+1; ifstr_arr[下一个_键]{ 添加_arr.pushparseIntstr _arr[next_key],10; arr.pushadd_arr; } } }
console.logarr 您应该运行此代码

let str = ' 1 22 333 4444 5 6 ';
let arr = [];
var res = str.split(" ");
console.log(res);
var a = res.filter(i => i !== "");
console.log(a);
var tempArr = [];
var counter = 0;
for (var i = 0; i < a.length; i++){
    counter++;
    tempArr.push(a[i]);
    if(counter == 2){
        arr.push(tempArr);
        tempArr = [];
        counter = 0;
    }
}
console.log(arr);
设str='1223334444456'; 设arr=[]; 让温度=str.trim.split; 对于let i=0;i<温度长度-1;我++ arr.push[parseInttemp[i],parseInttemp[i+1]; console.logarr; 对于let i=0;i} 基于这个问题,输出的格式不清楚。根据所需的输出格式,您可以通过几种方式执行此操作:

1如果希望最后一个项目都是下一个区块的第一个项目

常量输入='1223334444456'; const result=input.trim.split'.mapNumber.reduceall,n,i,arr=>i?[…全部[arr[i-1],n]]:[],[] console.logresult 常数res='122333444444456' .拆分“ .filterBoolean .mapv=>[v] .reduceac,curr,idx=>{ acc=idx%2?[…acc.0,acc.length-1,acc[acc.length-1]。concatcurr]:[…acc,curr]; 返回acc; }, [];
console.logres 如果我对任务的理解正确,这是解决问题的一种方法:

' 1 22 333 4444 5 6 '
  .trim()
  .split(' ')
  .reduce((arr, item, index) => {
    if (index % 2 === 0) {
      arr.push([ item ]);
    } else {
      arr.slice(-1)[0].push(item);
    }
    return arr;
  }, [])

作为替代方案,您可以使用带有捕获组和正向前瞻的正则表达式来断言后面的一个或多个数字,并在第二个捕获组中捕获该数字

然后将数组中的组1和组2添加到arr

常量正则表达式=/\d+?=\d+/g; 让m; 设str='1223334444456'; 设arr=[]; 而m=regex.execstr!==空的{ arr.push[m[1],m[2]; }
console.logarr;由于原始字符串中只有一个5,您真的希望最后一个数组有[5,6]还是只有[6]?为什么不使用正则表达式[3334444]会是平滑的。结果数组不是整数values@NickA也许这是一个过于宽泛的说法,但我尽量不去假设最初的海报明确地想要两人一组,因为人们可以合理地假设两人一组是巧合。@AdamChubbuck我在评论中没有注意到什么,不要理我:@AdamChubbuck,尽管可以安全地假设2组不是巧合的,因为:str.slicestr.indexOf'',**i**,str.indexOf'',**i+1**@NickA也许OP可以澄清。上面代码的输出是。。。不,不是,你掉了[3334444]
' 1 22 333 4444 5 6 '
  .trim()
  .split(' ')
  .reduce((arr, item, index) => {
    if (index % 2 === 0) {
      arr.push([ item ]);
    } else {
      arr.slice(-1)[0].push(item);
    }
    return arr;
  }, [])