首页 > 解决方案 > 如何使用reduce将字符串分成2个字符的块

问题描述

我正在尝试使用 reduce 来获得以下输出:

solution('abcdef') // should return ['ab', 'cd', 'ef']

如果字符串的长度是奇数,我们应该将其转换为偶数并添加一个'_'(下划线)

solution('abc') // should return ['ab', 'c_'] 

这是我到目前为止的位置:

  1. 我的 if 函数不起作用,不确定为什么。
  2. 我只能得到 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')

任何关于如何面对问题的提示和建议都会很好!多谢

标签: javascriptarraysstringfunctionreduce

解决方案


这将做到:

let splitTwos = (str) => str.match(/\w{1,2}/g).map(e => e.length == 2?e:e+"_")

console.log(splitTwos("abcde"))
console.log(splitTwos("abcdef"))


推荐阅读