在 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 }