如果你在 javascript 中有一个数组,即
['a', 'a', 'a', 'b', 'b', 'b', 'a', 'a', 'a']
按相似值对其进行分组的最简单方法是什么?
group(['a', 'a', 'a', 'b', 'b', 'b', 'a', 'a'])
// [['a','a','a'],['b','b','b'],['a','a']]
这是按预期工作的函数
group()
:
function group(arr) {
let ans = []
let tempArray = []
let currentText = ''
for(let i = 0; i <= arr.length; i++) {
tempArray.push(currentText)
if(currentText !== arr[i]) {
currentText = arr[i]
tempArray = []
ans.push(tempArray)
}
}
ans.pop()
return ans
}
如果元素是字符,您可以使用正则表达式:
const arr = ['a', 'a', 'a', 'b', 'b', 'b', 'a', 'a', 'a', 'c'];
grouped = arr.join('').match(/(.)\1*/g);
console.log(grouped);