我有一個API返回undescore_case
中的響應,並使用lowerCamerlCase
。我也使用NodeJS在前端和後端之間進行調解。Javascript將underscore_case轉換爲lowerCamelCase
我想任何類型的JavaScript變量的轉換爲lowerCamelCase
,爲此,我寫了這個功能:
function transform(any) {
if(Array.isArray(any)) {
any.forEach((v, k) => any[k] = transform(v));
} else if(typeof any === "object" && any != null) {
Object.keys(any).forEach(key => {
let t = key.replace(/_\w/g, (m) => m[1].toUpperCase());
if(t !== key) {
any[t] = transform(any[key]);
delete any[key];
}
});
}
return any;
}
它的工作原理,但我不知道是否有什麼辦法可以讓它更快。使用
let list = [];
for(let i = 0; i < 1000; i++)
list.push({
some_thing: {
aa_bb: 1,
bb_cc: 2,
cc_dd: 3
},
stuff_underscore: "aaa",
ordinary: 1
});
和測試:
我生成這個數據例如
console.time("test");
transform(list);
console.timeEnd("test");
那麼,有沒有什麼辦法,使其更快?
如果您自己反序列化(使用'JSON.parse'),則可以在反序列化期間更改密鑰。你是反序列化它還是圖書館爲你做這件事? – JLRishe
這可能更適合CodeReview SE,而不是這裏。沿着這些路線:保持簡單。而不是對參數類型進行條件檢查只是有一個函數可以處理對象,然後將它映射到它們的數組上。 –
我自己使用'JSON.parse'。 – Amit