首页 > 解决方案 > 如何使用javascript将字符串转换为对象并在snake_case中返回一些键?

问题描述

所以我正在尝试编写一个函数,它将订单作为字符串,并将其转换为以产品为键的对象。键值是数字形式的订购产品的数量。订单中的每个项目始终以产品的数量开始。

如果产品名称由多个单词组成,函数必须以snake_case 格式组合单词。对于空字符串,函数必须返回一个空对象。

有人可以解释执行此功能的最佳方法吗?

例如 :

myOrder('2 coca cola, 4 beer) // {coca_cola: 2, beer: 4}

标签: javascriptstringobject

解决方案


您可以使用mapreduce

function myOrder(str) {
  return str.length === 0 ?
     {} :
     str.split(',')
        .map(s => s.match(/(?<qty>\d+)\s*(?<name>.+)/).groups)
        .reduce((res, {name, qty}) => ({
          ...res, [name.replace(/\s/g, '_')]: +qty
        }), {});
}

console.log( myOrder('') );
console.log( myOrder('2 coca cola, 4 beer') );
console.log( myOrder('  46 foos & bars, 0fizz') );


推荐阅读