如何解决Javascript-如果某些键有空格,则分解对象
我必须处理一个草率的对象data.fields
,其中有些键有空格,有些没有,大写,有些没有。我一直在手动分配这样的变量:
const comments = data.fields["Additional Location Comments"];
const autoNumber = data.fields.Autonumber;
const category = data.fields.category;
const categorySymbol = data.fields["Category Symbol"];
const currentLocation = data.fields["Current Location"];
const dateModified = data.fields["Date Modified"];
const deliveryLocation = data.fields["Delivery Location"];
const description = data.fields.Desctiption;
const dimensions = data.fields.Dimensions;
const favorites = data.fields.Favorites;
const itemUrl = data.fields["ITEM URL"];
const image = data.fields.Image;
我该如何解构此结构并重命名密钥,这样就可以了?
const {
additionalLocationComments,autoNumber,category,categorySymbol,currentLocation,dateModified,deliveryLocation,description,dimensions,favorites,itemUrl,image,} = data.fields;
解决方法
您可以做的是遍历所有键,然后将它们转换为驼峰式大小写,然后将旧键中的数据与新键中的数据相加。
const oldob = {
"A Test Thing" : 1,"Another Test" : 3,"Ok Heres Another" : 4
};
let newob = {};
const camelCase = (str) => {
return str.replace(/(?:^\w|[A-Z]|\b\w)/g,function(word,index)
{
return index == 0 ? word.toLowerCase() : word.toUpperCase();
}).replace(/\s+/g,'');
}
Object.keys(oldob).forEach(key => {
newob[camelCase(key)] = oldob[key];
});
console.log(newob);
,
我会像下面那样做。最重要的方面是一个将给定字符串转换为其等效的驼峰大小写的函数:
function camelCase(s) {
s = s.replace(/\b\w/g,m => m.toUpperCase())
.replace(/[A-Z]{2,}/g,m => m[0] + m.slice(1).toLowerCase())
.replace(/\W/g,"");
return s[0].toLowerCase() + s.slice(1);
}
function cleanObject(obj) {
return Object.fromEntries(Object.entries(obj).map(([k,v]) => [camelCase(k),v]));
}
let fields = {
"Additional Location Comments": 1,"Autonumber": 2,"category": 3,"Category Symbol": 4,"Current Location": 5,"ITEM URL": 6,"alreadyInCamelCase": 7
};
console.log(cleanObject(fields));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。