gpt4 book ai didi

javascript - 标准化 Javascript 对象

转载 作者:行者123 更新时间:2023-12-03 07:24:36 25 4
gpt4 key购买 nike

我有一个 json 对象,里面有对象例如 user: {"name": "tim"} 并希望有一种方法将其转换为 "user.name": 'tim'

我已经尝试过:Javascript Recursion normalize JSON data

这没有返回我想要的结果,也尝试了一些软件包,没有运气

最佳答案

您可以使用递归方法通过连接嵌套对象的键来展平嵌套对象,如下所示:

const flattenObject = (obj) => {
const flatObject = {};

Object.keys(obj).forEach((key) => {
const value = obj[key];

if (typeof value === 'object') {
const flatNestedObject = flattenObject(value);

Object.keys(flatNestedObject).forEach((nestedKey) => {
flatObject[`${key}.${nestedKey}`] = flatNestedObject[nestedKey];
});
} else {
flatObject[key] = value;
}
});

return flatObject;
};

const obj = {
user: { name: 'tim' },
};

console.log(flattenObject(obj));

此解决方案适用于任何级别。

如果您的环境不支持Object.keys ,您可以使用for..in相反:

const flattenObject = (obj) => {
const flatObject = {};

for (const key in obj) {
if (!obj.hasOwnProperty(key)) continue;
const value = obj[key];

if (typeof value === 'object') {
const flatNestedObject = flattenObject(value);

for (const nestedKey in flatNestedObject) {
if (!flatNestedObject.hasOwnProperty(nestedKey)) continue;
flatObject[`${key}.${nestedKey}`] = flatNestedObject[nestedKey];
}
} else {
flatObject[key] = value;
}
}

return flatObject;
};

const obj = {
user: { name: 'tim' },
};

console.log(flattenObject(obj));

关于javascript - 标准化 Javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62772036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com