javascript - 如何将 char 添加到 javascript 对象键和值?

标签 javascript javascript-objects

我正在尝试将 '_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/

相关文章:

javascript - DataTables 问题 : VM9075 dataTables. min.js:24Uncaught TypeError: 无法设置未定义的属性 '_DT_CellIndex'

javascript - Underscore.js 如何计数

对象引用的 Javascript 字符串(没有 eval() 或索引)

javascript - 无法将所有反斜杠替换为正斜杠“from\to/

javascript - 在 Mongoose 子文档数组中使用子类

javascript - meteor 同步执行系统命令

javascript - 使用变量来引用对象属性?

JavaScript 仅打印数组的最后一个元素

javascript - 通过 jQuery 中的条件迭代创建一个组合两个现有对象的新数组

javascript - jquery追加元素位置始终为0