在JavaScript中展平JSON对象
假设我们有以下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 }