我是 JavaScript 的新手,所以如果这很愚蠢/不可能,请原谅我,但我正在尝试标准化 JavaScript 对象中的属性名称。比如我有这样的代码
var object = {
"firstName": "Joe",
"MiddleName": "Roy",
"last_name": "Fool"
}
我想创建一个具有属性名称 firstName、middleName 和 lastName 的新对象。有什么方法可以搜索这些属性并查看哪些属性违规?否则,我总是可以完全复制,但效率很低。谢谢
最佳答案
这可能超出了您的要求,但是将下划线分隔的命名转换为驼峰式命名非常容易;您可以遍历您的对象并生成一个具有正确名称的新对象:
var converter = /_(\w)/g, lowerFirst = /^(\w)/;
function convertName(name) {
if (converter.test(name)) {
name = name.toLowerCase().replace(converter, function ($0, $1) {
return $1.toUpperCase();
});
} else {
// correct a first letter being uppercase
name = name.replace(lowerFirst, function ($0, $1){ return $1.toLowerCase(); });
}
return name;
}
var hasOwnProperty = Object.prototype.hasOwnProperty,
toString = Object.prototype.toString;
function isPlainObject(obj) {
return toString.call(obj) === '[object Object]';
}
function convertObject(obj) {
var k, output = {};
for(k in obj) {
if (hasOwnProperty.call(obj, k)) {
output[convertName(k)] = isPlainObject(obj[k]) ? convertObject(obj[k]) : obj[k];
}
}
return output;
}
如果属性名称已经是驼峰式,则它们不会被正则表达式更改。
关于javascript - 在 JavaScript 属性名称中搜索字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17350932/