在 JavaScript 中展平 JSON 对象

javascriptweb developmentfront end technologyjson

假设,我们有以下 JSON 对象,该对象可能包含最多任何级别的嵌套 −

const obj = {
   "one": 1,
   "two": {
      "three": 3
   },
   "four": {
      "five": 5,
      "six": {
         &"seven": 7
      },
      &"eight": 8
   },
   &"nine": 9
};

我们需要编写一个 JavaScript 函数,该函数接受一个这样的嵌套 JSON 对象并返回一个不包含嵌套的新对象,并使用点符号将相应的值映射到键。

因此,对于上述对象,输出应如下所示 −

const output = {
   'one': 1,
   'two.three': 3,
   'four.five': 5,
   'four.six.seven': 7,
   'four.eight': 8,
   'nine': 9
};

示例

其代码为 −

const obj = {
   "one": 1,
   "two": {
      "three": 3
   },
   "four": {
      "five": 5,
      "six": {
         "seven": 7
      },
      "eight": 8
   },
   "nine": 9
};
const flattenJSON = (obj = {}, res = {}, extraKey = '') => {
   for(key in obj){
      if(typeof obj[key] !== 'object'){
         res[extraKey + key] = obj[key];
      }else{
         flattenJSON(obj[key], res, `${extraKey}${key}.`);
      };
   };
   return res;
};
console.log(flattenJSON(obj));

输出

控制台中的输出将是 −

{
   one: 1,
   'two.three': 3,
   'four.five': 5,
   'four.six.seven': 7,
   'four.eight': 8,
   nine: 9
}

相关文章