javascript - 如何使用reduce将字符串分成2个字符的块
问题描述
我正在尝试使用 reduce 来获得以下输出:
solution('abcdef') // should return ['ab', 'cd', 'ef']
如果字符串的长度是奇数,我们应该将其转换为偶数并添加一个'_'(下划线)
solution('abc') // should return ['ab', 'c_']
这是我到目前为止的位置:
- 我的 if 函数不起作用,不确定为什么。
- 我只能得到 2 个字符串,但不能超过那些。我想我是在强迫结果变成我想要的,但如果我们只有 1 个或 2 个字符,这将不起作用,对吗?
function solution(str){
if (str.lenght % 2!==0){str.concat('_')};
console.log(str)
const array = str.split(',');
const reducer = array.reduce((acc, curr, i, arr)=>{
return [...acc, curr[i]+curr[i+1], curr[i+2]+curr[i+3]]
},[])
return reducer
}
solution('helloworl')
任何关于如何面对问题的提示和建议都会很好!多谢
解决方案
这将做到:
let splitTwos = (str) => str.match(/\w{1,2}/g).map(e => e.length == 2?e:e+"_")
console.log(splitTwos("abcde"))
console.log(splitTwos("abcdef"))
推荐阅读
- javascript - 删除未使用的 Javascript base.js (Youtube iframe api)
- flutter - 测试 Flutter Facebook Firebase 登录
- javascript - 如何从嵌套字典中的值创建 [number, number][ ] 类型的列表?
- datepicker - 日期选择器没有禁用日期
- javascript - React-Native:未处理的承诺拒绝:错误:对象作为 React 子项无效
- java - 检查是否具有特定属性的对象数组 - java
- postgresql - 在进行长期插入事务时无法执行选择查询
- javascript - 扩展或映射数组会更改属性内的数组
- laravel - Laravel 模拟接口
- r - 为什么在使用 fct_collpase 函数时会收到错误消息“错误:意外 '=' in:”?