我有一个数组:
let array = ['yay', 'yay', 'yay', 'opps', 'yay', 'yay', 'opps', 'opps', 'opps'];
如果结果需要,该如何过滤该数组:
let filterArray = [['yay', 3] ['opps', 1], ['yay', 2], ['opps' 3]];
谢谢。
您可以使用Array.reduce
方法遍历原始数组并创建新数组。
acc
(累积数组)为空,则将[curr, 1]
(当前变量和计数)推入数组acc
(累积数组)最后推送的索引包含curr
变量,则更新计数acc
(累积数组)最后推送的索引不包含curr
变量,则推送[curr, 1]
in acc
。let array = ['yay', 'yay', 'yay', 'opps', 'yay', 'yay', 'opps', 'opps', 'opps'];
let modifiedArray = array.reduce((acc, curr) => {
if (!acc.length) {
acc.push([curr, 1]);
} else {
let lastPushedArray = acc[acc.length-1];
if (lastPushedArray[0] === curr) {
acc[acc.length-1][1]++;
} else {
acc.push([curr, 1]);
}
}
return acc;
}, []);
console.log(modifiedArray);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句