javascript - 如何小写对象中键的第一个字母?
问题描述
我有一个 JavaScript 对象,我想将键的第一个字母设为小写。
例如:key是Title那么应该是title;对于键 PublishDate 它应该是 publishDate,如果键是 Publish_Date 那么它应该是 publish_Date 等等。
对象可能更复杂,具体取决于从服务器接收的数据
[
{
"clientId":1,
"Title":"Test",
"Message":"fdsf",
"Image":"",
"PublishDate":"Feb 5 2020 12:00AM",
"UserID":null,
"authorName":"fdsfd",
"announceType":"Admin",
"IsAdmin":0,
"TimeAgo":"1 days"
},
{
"clientId":1,
"Title":"Test",
"Message":"testing",
"Image":"",
"PublishDate":"Feb 5 2020 12:00AM",
"UserID":null,
"authorName":"Lorem Ipsum",
"announceType":"Admin",
"IsAdmin":0,
"TimeAgo":"1 days"
},
{
"clientId":1,
"Title":"Test",
"Message":"testing ",
"Image":"",
"PublishDate":"Feb 5 2020 12:00AM",
"UserID":null,
"authorName":"Lorem Ipsum",
"announceType":"CEO",
"IsAdmin":0,
"TimeAgo":"1 days"
}
]
解决方案
您可以将.map()
每个对象添加到使用创建的新对象中Object.fromEntries()
。此方法采用一组[key, value]
对,您可以Object.entries()
在方法中的每个对象上使用这些对.map()
。对于条目中的每个键,您可以将其首字母小写。
请参见下面的示例:
const data = [ { "clientId":1, "Title":"Test", "Message":"fdsf", "Image":"", "PublishDate":"Feb 5 2020 12:00AM", "UserID":null, "authorName":"fdsfd", "announceType":"Admin", "IsAdmin":0, "TimeAgo":"1 days" }, { "clientId":1, "Title":"Test", "Message":"testing", "Image":"", "PublishDate":"Feb 5 2020 12:00AM", "UserID":null, "authorName":"Lorem Ipsum", "announceType":"Admin", "IsAdmin":0, "TimeAgo":"1 days" }, { "clientId":1, "Title":"Test", "Message":"testing ", "Image":"", "PublishDate":"Feb 5 2020 12:00AM", "UserID":null, "authorName":"Lorem Ipsum", "announceType":"CEO", "IsAdmin":0, "TimeAgo":"1 days" } ];
const lowerCase = str => str[0].toLowerCase() + str. slice(1);
const res = data.map(
obj => Object.fromEntries(Object.entries(obj).map(
([k, v]) => [lowerCase(k), v])
)
);
console.log(res);
.as-console-wrapper { max-height: 100% !important;} /* ignore */
目前,Object.fromEntries()
确实有有限的浏览器支持,但是,它可以很容易地填充。另一种方法是使用Object.assign()
每个条目并将其映射到一个对象,然后将其传播到一个更大的对象:
const data = [ { "clientId":1, "Title":"Test", "Message":"fdsf", "Image":"", "PublishDate":"Feb 5 2020 12:00AM", "UserID":null, "authorName":"fdsfd", "announceType":"Admin", "IsAdmin":0, "TimeAgo":"1 days" }, { "clientId":1, "Title":"Test", "Message":"testing", "Image":"", "PublishDate":"Feb 5 2020 12:00AM", "UserID":null, "authorName":"Lorem Ipsum", "announceType":"Admin", "IsAdmin":0, "TimeAgo":"1 days" }, { "clientId":1, "Title":"Test", "Message":"testing ", "Image":"", "PublishDate":"Feb 5 2020 12:00AM", "UserID":null, "authorName":"Lorem Ipsum", "announceType":"CEO", "IsAdmin":0, "TimeAgo":"1 days" } ];
const lowerCase = str => str[0].toLowerCase() + str. slice(1);
const res = data.map(
obj => Object.assign({}, ...Object.entries(obj).map(
([k, v]) => ({[lowerCase(k)]: v})
))
);
console.log(res);
.as-console-wrapper { max-height: 100% !important;} /* ignore */
推荐阅读
- java - 如何配置 ldaptive 以使用连接池 (jaas)
- python - Pandas:使用 np.where() 删除值小于今天的行?
- arrays - 声明具有特定类型但任意维数的数组
- bash - Crontab:在无限循环中运行的计划作业卡住了
- python - 如何在 Python 3 中腌制日期时间以供 Python 2 读取
- python - 查找字符串中字符的位置
- javascript - 让模态显示在调用的 vue 方法中
- node.js - 在 Loopback 3 中刷新 AccessToken
- visual-studio - visual studio 2019 打开解决方案文件不兼容
- c# - 如何使用 REGEX 将作者拆分为对象或数组 C#?