如何使用reduce将字符串分成2个字符的块

我正在尝试使用reduce获得以下输出: solution('abcdef')//应该返回['ab','cd','ef'];如果字符串的长度是奇数,我们应该将其转换为偶数,并添加一个''(下划线)=> solution('abc')//应该返回['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')

关于如何解决该问题的任何提示和建议都很好! 非常感谢