标签:
如果您想在 JavaScript 中对嵌套对象进行分类,可以使用递归算法来实现。以下是一个示例代码,它将具有相同字符串的嵌套对象归为一类:
function groupObjectsByString(obj) {
const groupedObjects = {};
function traverse(obj, parentKey = '') {
for (const key in obj) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
traverse(obj[key], parentKey + key + '.');
} else if (typeof obj[key] === 'string') {
const str = obj[key];
if (!groupedObjects.hasOwnProperty(str)) {
groupedObjects[str] = [];
}
groupedObjects[str].push(obj);
}
}
}
traverse(obj);
return groupedObjects;
}
// 示例嵌套对象
const obj = {
a: 'Hello',
b: {
c: 'World',
d: {
e: 'Hello'
}
},
f: {
g: 'World'
}
};
const grouped = groupObjectsByString(obj);
console.log(grouped);
JavaScript
输出结果将会是:
{
'Hello': [ obj, obj.b.d ],
'World': [ obj.b.c, obj.f.g ]
}
JavaScript
上述代码使用 groupObjectsByString
函数来对嵌套对象进行分类。它遍历对象的属性并检查值的类型。如果属性值是字符串,它会将对象添加到 groupedObjects
中相应的字符串键下。如果属性值是嵌套对象,则递归调用 traverse
函数以继续遍历嵌套对象。最终,返回分组后的对象 groupedObjects
。
标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。