下面的代码很实用,但我想重构!==允许我的三元只能在非空白的值上运行的部分,因此我可以包括边缘用例测试.这将包括任何非字母值以及空白,我知道regex可能起到一定作用,但我找不到一种巧妙的方法将其合并到三元操作之前的if()语句中.

const letterPositions = function(strPos) {
  if (typeof strPos !== 'string') {
    return console.log('Sorry your input is not a string');
  }

  const result = {};
  for (let i = 0; i < strPos.length; i++) {
    if (strPos[i] !== ' ') {
      result[strPos[i]] ? result[strPos[i]].push(i) : (result[strPos[i]] = [i]);
    }
  }

  return result;
};

console.log(letterPositions('aa bb cc'));

推荐答案

你也可以这样做...

const letterPositions = str =>
  {
  if (typeof str !== 'string') 
    return console.log('Sorry your input is not a string' )
 
  return [...str].reduce((r,l,i)=>((l===' ')?null:(r[l]??=[],r[l].push(i)),r),{})
  }

console.log( letterPositions('aa bb cc') )
.as-console-wrapper {max-height: 100% !important;top: 0;}
.as-console-row::after {display: none !important;}

Javascript相关问答推荐

如何比较嵌套对象的更改并创建更改报告

在JS中获取名字和姓氏的首字母

如何解决这个未能在响应上执行json:body stream已读问题?

*ngFor和@代表输入decorator 和选角闭合

仅圆角的甜甜圈图表

如何在使用fast-xml-parser构建ML时包括属性值?

为什么我的列表直到下一次提交才更新值/onChange

当点击注册页面上的注册按钮时,邮箱重复

使用Java脚本根据按下的按钮更改S文本

如何将多维数组插入到另一个多维数组中?

为什么我的自定义元素没有被垃圾回收?

Reaction组件在本应被设置隐藏时仍显示

不同表的条件API端点Reaction-redux

如何使用画布在另一个内部绘制一个较小但相同的形状,同时保持恒定的边界厚度?

如何在脚本编译后直接将RxJ模块导入浏览器(无需Angel、webpack、LiteServer)

如果NetSuite中为空,则限制筛选

我不知道如何纠正这一点.

如何正确地在ComponentWillUnmount中卸载状态以避免内存泄漏?

使用静态函数保存 node 前的钩子

REACT-本机错误:错误类型错误:无法读取未定义的容器的属性