gpt4 book ai didi

javascript - 每次遇到一个元素时将数组拆分为多个数组的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-29 20:43:05 26 4
gpt4 key购买 nike

我对 JS 还很陌生,还在学习中。我有这个数组:

[A,true,B,true,C,true,D,true,E,A,true,B,true,C,false,E,A,true,B,false,E]

每次出现 E 时将所述数组拆分为多个数组的最佳方法是什么?

即。上面的数组变为:

[A,true,B,true,C,true,D,true,E]
[A,true,B,true,C,false,E]
[A,true,B,false,E]

我尝试过的:

我试过将数组转换为字符串并拆分,但结果并不令人满意。

var pathsString = paths.toString();
pathsString = pathsString.split("," + end).filter(function(el) {return el.length != 0});
//end is E in this case

谢谢

最佳答案

您可以使用 Array.reduce()Array.filter() :

const arr = ['A',true,'B',true,'C',true,'D',true,'E','A',true,'B',true,'C',false,'E','A',true,'B',false,'E'];

const result = arr.reduce((acc, x) => {
acc[acc.length-1].push(x)
if (x === 'E') acc.push([]);
return acc;
}, [[]]).filter(x => x.length);

console.log(result);

这里有一些解释:

  • Array.reduce() 遍历数组并将累加器从一个迭代传递到下一个迭代。此累加器 (acc) 在开始时被初始化为 [[]](一个包含空组的数组)。

  • 在每次迭代中,我们获取 acc 中的最后一组并将值 x 附加到该组。

  • 如果值等于 E,我们还会为下一次迭代推送一个新的空组。

  • 然后,如果 E 是最后一个字母或者输入数组为空,我们会过滤掉遗漏的空组。

关于javascript - 每次遇到一个元素时将数组拆分为多个数组的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55054123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com