我正在尝试将 '_x'
添加到每个对象键,将 '_y'
添加到每个对象值。
这是代码:
var data = {
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": "GMLXML"
},
"GlossSee": "markup"
}
}
}
}
}
function treee(data) {
Object.keys(data).map( function (key) {
if(Object.keys(data[key]).length == 0){
data[key] = {[key + "_x"]: data[key] + "_y"};
}
else{
data[key] = { [key + "_x"]: treee(data[key]) };
}
});
}
它不起作用,我不知道为什么。你能告诉我出了什么问题吗?
最佳答案
基本上,您需要新 key 而不是旧 key ,然后删除实际的 key 。
另一部分是在必要时更改内部对象。
function treee(data) {
Object.keys(data).map(function (key) {
if (data[key] && typeof data[key] === 'object') {
treee(data[key]);
}
data[key + '_x'] = typeof data[key] === 'string' ? data[key] + '_y' : data[key];
delete data[key];
});
}
var data = { glossary: { title: "example glossary", GlossDiv: { title: "S", GlossList: { GlossEntry: { ID: "SGML", SortAs: "SGML", GlossTerm: "Standard Generalized Markup Language", Acronym: "SGML", Abbrev: "ISO 8879:1986", GlossDef: { para: "A meta-markup language, used to create markup languages such as DocBook.", GlossSeeAlso: "GMLXML" }, GlossSee: "markup" } } } } };
treee(data);
console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 如何将 char 添加到 javascript 对象键和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40995852/