このようなことができるかもしれません。
1 つ目replace
は、大文字のキャメル ケースのマーカーにする任意の文字を置き換えるために使用できます。
2 つ目replace
は、マーカーに続く文字でキャメル ケーシングを実行します。
最後replace
に、識別子の最初の文字が小文字であることを確認します。
standardiseProperties
object
のルールを使用してその場で動作しますcamelCase
。しかし、新しいオブジェクトを返すようにすることもできますstandardised
。
名前が既に存在するために使用できない場合は、元の名前が使用されます。
私はこれに多くの時間を費やしていませんでした.最適化が行われる可能性があり、ルールを多少変更したい場合もあります.
Javascript
function camelCase(string) {
return string.replace(/[-+]/g, "_").replace(/_([\da-z])/gi, function (all, letter) {
return letter.toUpperCase();
}).replace(/^([A-Z])/, function (all, letter) {
return letter.toLowerCase();
});
}
function standardiseProperties(object) {
var standardised = {},
newName,
i;
for (i in object) {
if (object.hasOwnProperty(i)) {
newName = camelCase(i);
if (standardised.hasOwnProperty(newName)) {
standardised[i] = object[i];
} else {
standardised[newName] = object[i];
}
delete object[i];
}
}
for (i in standardised) {
object[i] = standardised[i];
}
}
var object = {
"firstName": "Joe",
"MiddleName": "Roy",
"last_name": "Fool"
};
console.log(object);
standardiseProperties(object);
console.log(object);
出力
Object {firstName: "Joe", MiddleName: "Roy", last_name: "Fool"}
Object {firstName: "Joe", middleName: "Roy", lastName: "Fool"}
jsfiddleについて