javascript - 使用reduce javascript将字符串转换为对象

标签 javascript arrays javascript-objects reduce

我正在尝试将像“sheep”这样的字符串转换为这样的对象:

{
   "s":{
      "initial":1,
      "final":1
   },
   "h":{
      "initial":1,
      "final":1
   },
   "e":{
      "initial":2,
      "final":2
   },
   "p":{
      "initial":1,
      "final":1
   }
}

目前我可以在javascript中使用reduce方法并实现此目的:

const names = 'sheep'.split('');
const count = (names) =>
  names.reduce((acc, name) => ({ ...acc, [name]: (acc[name] || 0) + 1 }), {});
console.log(count(names)) //{ s: 1, h: 1, e: 2, p: 1 }

我曾尝试阅读类似的帖子,但我对 JS 还很陌生。谁能帮帮我吗?谢谢。

最佳答案

尝试这样

const names = "sheep".split("");
const count = (names) =>
  names.reduce(
    (acc, name) => ({
      ...acc,
      [name]: {
        initial: (acc?.[name]?.initial ?? 0) + 1,
        final: (acc?.[name]?.final ?? 0) + 1,
      },
    }),
    {}
  );
console.log(count(names)); 

关于javascript - 使用reduce javascript将字符串转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70894218/

相关文章:

javascript - lodash中的一个数组映射函数

javascript - 如何迭代对象数组并字符串化

javascript - 传递给 SCEditor 时无法使 JSON 对象正常工作

javascript - 如何创建一个默认返回值但也有扩展方法的方法?

javascript - 使用数据进行 AJAX 后调用

javascript - 添加链接到按钮 Javascript

php - 计算字符串 PHP 中所有字母的出现次数

arrays - Swift 中的普通数组与 'NSMutableArray' 相比?

Javascript 和 Regex 将时间存储在数组中

javascript - 使用异步 setState 进行 React 测试