gpt4 book ai didi

javascript - 如何在 javascript 中获取不同深度的 JSON 对象的大小?

转载 作者:行者123 更新时间:2023-11-29 10:51:48 27 4
gpt4 key购买 nike

我整天都在做这个,试图用 Javascript 编写一个递归函数来获取大小。我需要一些帮助:/

基本上,我的 JSON 对象包含分层类别/子类别。我想确定每个类别/子类别的大小。

这是一个简单的演示:http://pastehtml.com/view/bkpzzlabs.html

我想在左边获取 JSON,在右边获取 HTML。也许我一直盯着这台电脑显示器看太久了,因为我这辈子都想不通。

非常感谢您的帮助。

最佳答案

“演示”的右侧表明您不只是想递归地计算 JSON 中端点(或“叶”)的总数;您想知道树中每个类别(非叶节点)的递归大小。这里的关键是叶子和根之间的节点不算在内。

Update: I updated the function; read below.

试试这个:

function parseTree(parent) {
var hasNonLeafNodes = false;
var childCount = 0;

for (var child in parent) {
if (typeof parent[child] === 'object') {
// Parse this sub-category:
childCount += parseTree(parent[child]);
// Set the hasNonLeafNodes flag (used below):
hasNonLeafNodes = true;
}
}

if (hasNonLeafNodes) {
// Add 'num_children' element and return the recursive result:
parent.num_children = childCount;
return childCount;
} else {
// This is a leaf item, so return 1:
return 1;
}
}

此函数将修改 原始对象,以便将新键'num_children' 添加到树中的每个非叶节点。该函数返回所有parent 后代的叶节点总数。请注意,也完全可以在对象的子集上调用此函数。

这是一个现场演示:http://jsfiddle.net/PPvG/CXXaB/

Sorry about that! I had to do something else for a bit and, apparently, forgot what it was I was doing here... ;-)

The updated solution should count the addresses correctly, but keep in mind that arrays can't have named keys (such as num_children). This is relevant in your example as e.g. "Pothole" is an array.

关于javascript - 如何在 javascript 中获取不同深度的 JSON 对象的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8863838/

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