我在JavaScript中有点迷失。我有这个结构:
{
"value": 5,
"children": [{
"value": 18,
"children": [{
"value": 27,
"children": []
}, {
"value": 4,
"children": []
}]
}, {
"value": 2,
"children": []
}]
}
如何使用JavaScript在树中获得最高价值?
答案 0 :(得分:1)
在这种特殊情况下,您可能想要使用此功能:
var baseObject = {
"value": 5,
"children": [{
"value": 18,
"children": [{
"value": 27,
"children": []
}, {
"value": 4,
"children": []
}]
}, {
"value": 2,
"children": []
}]
};
function getHighestValue(obj) {
var res = obj.value;
for(var i in obj.children) {
res = Math.max(res, getHighestValue(obj.children[i]));
}
return res;
}
alert(getHighestValue(baseObject));
答案 1 :(得分:0)
如果理解你的正确应该看起来像这样。
var highestValue = JSONresponse.value;
HighVal(JSONresponse);
function HighVal(JSON)
{
if(highestValue < JSON.value)
{
highestValue = JSON.value
}
for(i=0;i<JSON.children.lenght;i++)
{
HighVal(JSON.children[i]);
}
}
答案 2 :(得分:0)
另一种方法是,如果您的对象树模式相同,
Stringify对象并执行正则表达式以获取此模式“value:{n}”的所有整数值,然后找到最大值。
var jsono = {
"value": 5,
"children": [{
"value": 18,
"children": [{
"value": 27,
"children": []
}, {
"value": 4,
"children": []
}]
}, {
"value": 2,
"children": []
}]
}
var maxvalue;
JSON.stringify(jsono).match(/\"value\":\s*(\d+)/g).map(function(value){ return value.match(/(\d+)/g).map(function(value){ maxvalue = Math.max(maxvalue || 0,value);});});
alert(maxvalue);
答案 3 :(得分:-1)
我不会为你编写代码,但基本上,它与其他语言一样。
您遍历每个正确的孩子,直到您知道它是结束节点。
如何使用JavaScript访问JSON?
var tree =
{
parent : [
{
//child1 details
},
{
//child2 details
},
]
}
对于JSON密钥访问,请使用tree.<key> (dot)
或tree['key']
。在这种情况下,tree.parent
或tree["parent"]
。
对于阵列访问,请使用索引。由于parent
是一个数组,因此您可以tree.parent[0]
或tree['parent'][0]
访问子项。
我更喜欢dot方法,以区分视觉上的JSON和数组。
,您需要一些东西来区分正确的孩子和左孩子。您可以将其作为约定,将正确的子项作为数组中的[0]
索引,也可以为每个节点添加另一个值,表示其右侧或左侧。