javascript - 将数组中的相同元素组合为数组中的一个字符串的更简洁的方法?
问题描述
我正在尝试学习如何重构我的代码,并且我编写了以下功能块:
joinSame = (arr) =>{
let simplifiedArr = [];
for(let i=0; i < arr.length; i++){
const tempLast = arr.lastIndexOf(arr[i]);
const element = arr[i].toString()
if(i === tempLast){
simplifiedArr.push(element);
} else {
const tempMultiplier = tempLast-i+1;
simplifiedArr.push(element.repeat(tempMultiplier));
i = tempLast;
}
}
return simplifiedArr;
}
这个想法是,如果我输入一个排序数组 ( [3,3,3,4,'a','a']
),我希望输出是一个将相似实体组合成一个字符串 ( ['333', '4', 'aa']
) 的数组。我尝试使用 .map 和 .forEach 数组方法,但我的问题是尝试“跳跃”索引以转到下一个唯一元素。
我是否通过尝试将其重构为 .map 或 .forEach 方法而使事情变得过于复杂,或者我的代码“好”到足以让它消失吗?
解决方案
您可以利用reduce
然后采取Object.values
:
const arr = [3,3,3,4,'a','a'];
const result = Object.values(arr.reduce((a,b)=>(a[b]=(a[b] || '')+b,a),{}))
console.log(result);
推荐阅读
- tensorflow - 无法恢复 TensorFlow 检查点
- python - maya中的按钮反馈颜色python?
- swift - 为什么表格视图隐藏在搜索栏下方?
- react-native - 提供图标以响应堆栈导航
- python - 如何展平任意输入形状的数据?
- ruby-on-rails - 将参数传递给 around_action 引发:LocalJumpError no block given (yield)
- python - Kivy:如何修复 gstplayer 中的“无法创建 playbin”错误
- python - python - 将.json加载到字典中失败
- php - 在 Wordpress 中上传 TSV 文件不起作用
- java - Java mssql-jdbc:从带有 xml 列的表中检索数据缓慢