javascript - 如何使用javascript将字符串转换为对象并在snake_case中返回一些键?
问题描述
所以我正在尝试编写一个函数,它将订单作为字符串,并将其转换为以产品为键的对象。键值是数字形式的订购产品的数量。订单中的每个项目始终以产品的数量开始。
如果产品名称由多个单词组成,函数必须以snake_case 格式组合单词。对于空字符串,函数必须返回一个空对象。
有人可以解释执行此功能的最佳方法吗?
例如 :
myOrder('2 coca cola, 4 beer) // {coca_cola: 2, beer: 4}
解决方案
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') );
推荐阅读
- azure-devops - 无法从其他项目签出 repos
- data-science - 在训练测试中表现出色,在测试集上表现不佳
- sql - SQL:比较一个值是否存在于另一个表中,反之亦然
- android - Android 10 (Q) 中的后台服务录像机
- r - 如何将数据转化为概率
- laravel - 验证成功后 Laravel 重定向到登录页面
- hibernate - org.hibernate.tool.schema.spi.CommandAcceptanceException:执行 DDL 时出错“创建表 TABLE_JSON
- node.js - 如何在没有 root 权限的情况下安装多个版本的 NodeJS?
- typescript - 从 yarn 安装带有 prepare 脚本的 npm 包只会产生 index.js
- json - 如何按值对计算属性进行排序?