我在 JS 中有這個陣列
initialArray = [A,B,C,C,D,E,F,F,G,K]
我想分成:
chucks = [[A,B,C], [C,D,E,F], [F,G,K]]
重復項是分隔符,例如“C”或“F”
如何在 ES6 中進行拆分?
uj5u.com熱心網友回復:
使用單個for回圈并將當前塊保存在變數中以推送到的相當直接的解決方案。
const initialArray = ['A', 'A', 'B', 'C', 'C', 'D', 'E', 'F', 'F', 'G', 'K', 'K'];
const chunk_at_duplicate = (arr) => {
let chunk = [], res = [chunk];
for (let i = 0; i < arr.length; i ) {
if (arr[i] === arr[i - 1]) {
res.push(chunk = []);
}
chunk.push(arr[i]);
}
return res;
};
console.log(chunk_at_duplicate(initialArray));
uj5u.com熱心網友回復:
您可以減少陣列并添加值或新陣列,具體取決于最后一個值。
const
array = ['A','B','C','C','D','E','F','F','G','K'],
result = array.reduce((r, v, i, { [i - 1]: last }) => {
if (v === last) r.push([]);
else r[r.length - 1].push(v);
return r;
}, [[]]);
console.log(result);
uj5u.com熱心網友回復:
編輯:現在基于克隆
const initialArray = ["A","B","C","C","D","E","F","F","G","K"];
const chunks = [];
let smallChunk = [];
let index = 0;
while (index < initialArray.length){
smallChunk.push(initialArray[index]);
if (initialArray[index 1] == initialArray[index]){
chunks.push(smallChunk);
smallChunk = [];
}
index ;
}
chunks.push(smallChunk);
console.log(chunks);
uj5u.com熱心網友回復:
您可以for ... of與Object.entries()以下一起使用:
const initialArray = ["A","B","C","C","D","E","F","F","G","K"];
const chunks = [];
let start = 0
for(const [i,v] of Object.entries(initialArray)) {
if(i > 0 && v === initialArray[ i-1]) {
chunks.push( initialArray.slice(start, i) );
start = i;
} else if( i === initialArray.length - 1 ) {
chunks.push( initialArray.slice(start) );
}
}
console.log( chunks );
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/371109.html
標籤:javascript 数组 分裂
