【发布时间】:2022-01-06 09:59:54
【问题描述】:
我的代码有效,但我认为它效率不高,可能有更有效的方法。 我有一个 Json (data.json):
{
"Testaments":[
{
"Books":[
{
"Chapters":[
{
"Verses":[
{
"ID":2,
"Text":"Au commencement, Dieu créa les cieux et la terre."
},
{
"ID":2,
"Text":"La terre était informe et vide: il y avait des ténèbres à la surface de l'abîme, et l'esprit de Dieu se mouvait au-dessus des eaux."
}
]
}
]
}
]
}
]
}
我想用大写转换键对象,(我不想使用正则表达式):
const fs = require("fs");
const url = "./data.json";
var camalize = function camalize(str) {
return str
.toLowerCase()
.replace(/[^a-zA-Z0-9]+(.)/g, (m, chr) => chr.toUpperCase());
};
fs.readFile(url, "utf8", (err, data) => {
if (err) {
console.error(err);
return;
}
var obj = JSON.parse(data);
changeName(obj);
obj.testaments.forEach((elem, ind) => {
changeName(elem);
obj.testaments[ind].books.forEach((elem2, ind2) => {
changeName(elem2);
obj.testaments[ind].books[ind2].chapters.forEach((elem3, ind3) => {
changeName(elem3);
obj.testaments[ind].books[ind2].chapters[ind3].verses.forEach(
(elem4) => {
changeName(elem4);
}
);
});
});
});
function changeName(obj) {
for (const property in obj) {
const newName = camalize(property);
obj[newName] = obj[property];
//console.log(typeof obj[newName]);
delete obj[property];
}
}
console.log("finish");
fs.writeFileSync(`export/export.json`, JSON.stringify(obj, null, 2));
});
我不想用 foreach 方法制造回调地狱, 是一种更有效的方法吗?
谢谢
【问题讨论】:
-
您是否考虑过使用递归方法? MDN 文档:developer.mozilla.org/en-US/docs/Glossary/Recursion 此处示例:javascripttutorial.net/javascript-recursive-function
-
您说“我想将键对象转换为大写”,但您似乎想将其设为驼峰式?您想要 MYLONGKEY、myLongKey 还是 MyLongKey?
-
是的骆驼案
标签: javascript node.js arrays