如何使用Javascript将数组拆分为基于一个值的多个数组?
我有一个数组,我想根据“Finished”值将其拆分为多个数组,当我找到它时,我会拆分数组 我的代码是:如何使用Javascript将数组拆分为基于一个值的多个数组?,javascript,arrays,split,indexof,Javascript,Arrays,Split,Indexof,我有一个数组,我想根据“Finished”值将其拆分为多个数组,当我找到它时,我会拆分数组 我的代码是: var输入=['urlGettingF','├─破碎的─aquaHTTP_404','├─破碎的─url1HTTP_404、ok、urlok、Finished、, 'urlgottingf2','├─破碎的─url1HTTP_404','├─破碎的─url21HTTP_404,“已完成”, “urlGettingF3”├─破碎的─url3HTTP_404','├─破碎的─URL213 ht
var输入=['urlGettingF','├─破碎的─aquaHTTP_404','├─破碎的─url1HTTP_404、ok、urlok、Finished、,
'urlgottingf2','├─破碎的─url1HTTP_404','├─破碎的─url21HTTP_404,“已完成”,
“urlGettingF3”├─破碎的─url3HTTP_404','├─破碎的─URL213 http_404,“完成”
];
函数chunkArray(数组,大小){
让结果=[]
for(数组的值){
让lastArray=result[result.length-1]
如果(!lastary | | lastArray.length==大小){
结果。推送([值])
}否则{
lastArray.push(值)
}
}
返回结果
}
const x=input.findIndex(element=>element.indexOf('Finished')>-1)
log(chunkArray(input,x+1))代码>您可以使用找到所有出现的已完成的。减少,然后通过创建一个新的数组。在找到的标记处对每个出现进行切片:
var输入=['urlGettingF','├─破碎的─aquaHTTP_404','├─破碎的─url1HTTP_404、ok、urlok、Finished、,
'urlgottingf2','├─破碎的─url1HTTP_404','├─破碎的─url21HTTP_404,“已完成”,
“urlGettingF3”├─破碎的─url3HTTP_404','├─破碎的─URL213 http_404,“完成”
];
const finishedicies=输入。减少((a,项,i)=>{
如果(项目=='Finished'){
a、 推(i);
}
返回a;
}, []);
const chunked=finishedIndicies.map(
(sliceIndex,i,arr)=>input.slice(arr[i-1]==未定义?0:arr[i-1]+1,sliceIndex+1)
);
console.log(分块)代码>您可以使用找到所有出现的已完成的。减少,然后通过创建一个新的数组。在找到的标记处对每个出现进行切片:
var输入=['urlGettingF','├─破碎的─aquaHTTP_404','├─破碎的─url1HTTP_404、ok、urlok、Finished、,
'urlgottingf2','├─破碎的─url1HTTP_404','├─破碎的─url21HTTP_404,“已完成”,
“urlGettingF3”├─破碎的─url3HTTP_404','├─破碎的─URL213 http_404,“完成”
];
const finishedicies=输入。减少((a,项,i)=>{
如果(项目=='Finished'){
a、 推(i);
}
返回a;
}, []);
const chunked=finishedIndicies.map(
(sliceIndex,i,arr)=>input.slice(arr[i-1]==未定义?0:arr[i-1]+1,sliceIndex+1)
);
console.log(分块)代码>
var输入=['urlGettingF','├─破碎的─aquaHTTP_404','├─破碎的─url1HTTP_404、ok、urlok、Finished、,
'urlgottingf2','├─破碎的─url1HTTP_404','├─破碎的─url21HTTP_404,“已完成”,
“urlGettingF3”├─破碎的─url3HTTP_404','├─破碎的─URL213 http_404,“完成”
];
函数组块数组(arr){
让结果=[
[]
];
设指数=0;
arr.forEach((x,i)=>{
结果[指标].push(x);
如果((i+1)
var输入=['urlGettingF','├─破碎的─aquaHTTP_404','├─破碎的─url1HTTP_404、ok、urlok、Finished、,
'urlgottingf2','├─破碎的─url1HTTP_404','├─破碎的─url21HTTP_404,“已完成”,
“urlGettingF3”├─破碎的─url3HTTP_404','├─破碎的─URL213 http_404,“完成”
];
函数组块数组(arr){
让结果=[
[]
];
设指数=0;
arr.forEach((x,i)=>{
结果[指标].push(x);
如果((i+1)
var输入=['urlGettingF','├─破碎的─aquaHTTP_404','├─破碎的─url1HTTP_404',ok',urlok',Finished',urlGettingF2','├─破碎的─url1HTTP_404','├─破碎的─url21HTTP_404','Finished','urlGettingF3','├─破碎的─url3HTTP_404','├─破碎的─url213HTTP_404','完成']
常数res=输入
.加入(“”)
.split('完成')
.map(item=>item.split(“”).filter(item=>item))
.filter(item=>item.length)
.map(项=>[…项“已完成”])
console.log(res)
var输入=['urlGettingF','├─破碎的─aquaHTTP_404','├─破碎的─url1HTTP_404',ok',urlok',Finished',urlGettingF2','├─破碎的─url1HTTP_404','├─破碎的─url21HTTP_404','Finished','urlGettingF3','├─破碎的─url3HTTP_404','├─破碎的─url213HTTP_404','完成']
常数res=输入
.加入(“”)
.split('完成')
.map(item=>item.split(“”).filter(item=>item))
.filter(item=>item.length)
.map(项=>[…项“已完成”])
log(res)
您可以使用以下算法
查找indexOf('Finished')
使用Array.splice
函数获取值,直到索引
.splice
还会更新现有阵列
执行上述操作直到indexOf('Finished')>-1
最后,将剩余的输入数组
添加到输出数组
let input=['urlGettingF','├─破碎的─aquaHTTP_404','├─破碎的─url1HTTP_404、ok、urlok、Finished、,
'urlgottingf2','├─破碎的─url1HTTP_404','├─破碎的─url21HTTP_404,“已完成”,
“urlGettingF3”├─破碎的─url3HTTP_404','├─破碎的─URL213 http_404,“完成”
];
让输出=[];
while(true){
push(input.splice(0,input.indexOf('Finished')+1));
if(input.indexOf('Finished')=-1){
input.length&&output.push(输入);//添加所有剩余值
打破
}
}
控制台日志(输出)代码>您可以使用以下算法
查找indexOf('Finished')
使用Array.splice
函数获取值,直到索引
.splice
还会更新现有阵列
执行上述操作直到indexOf('F
let keywordToFind = 'urlGettingF';
const result = input.reduce((a, c) => {
(c.includes(keywordToFind)) ? a.push([c]) : a[a.length - 1].push(c);
return a;
}, []);