javascript - 按元素分割数组
我如何按元素分割数组?
例如,lodash 有这个按长度分割数组的函数
_.chunk(['a', 'b', 'c', 'd'], 2);
// => [['a', 'b'], ['c', 'd']]
_.chunk(['a', 'b', 'c', 'd'], 3);
// => [['a', 'b', 'c'], ['d']]
所以我有一个像这样的数组 ['a', 'b', '*', 'c'],我可以做类似的事情吗
chunk(['a', 'b', '*', 'c'], '*')
这将给我
[['a', 'b'], ['c']]
它有点像数组的字符串拆分
答案#1
你可以使用 array.Reduce:
var arr = ['a', 'b', '*', 'c'];
var c = '*';
function chunk(arr, c) {
return arr.reduce((m, o) => {
if (o === c) {
m.push([]);
} else {
m[m.length - 1].push(o);
}
return m;
}, [[]]);
}
console.log(chunk(arr, c));答案#2
使用传统的 for 循环:
function chunk(inputArray, el){
let result = [];
let intermediateArr = [];
for(let i=0; i<inputArray.length; i++){
if(inputArray[i] == el)
{
result.push(intermediateArr);
intermediateArr=[];
}else {
intermediateArr.push(inputArray[i]);
}
}
if(intermediateArr.length>0) {
result.push(intermediateArr);
}
return result;
}
console.log(
chunk(['a', 'b', '*', 'c', 'd', 'e', '*', 'f'], '*')
)