我有以下JSON对象:
{
"nodeId": 2965,
"appId": 208,
"navigationType": 0,
"displaySeq": 0,
"displayText": "Delete Testing",
"customerAttribute": "",
"saveAsDefault": false,
"ussdDisplayText": "Delete Testing",
"headerForChild": "",
"Nodes": [
{
"nodeId": 3081,
"appId": 208,
"navigationType": 0,
"displaySeq": 1,
"displayText": "New node2967",
"customerAttribute": "",
"saveAsDefault": false,
"ussdDisplayText": "New node2967",
"headerForChild": "",
"parentNodeId": 2965,
"Nodes": [
{
"nodeId": 3086,
"appId": 208,
"navigationType": 0,
"displaySeq": 1,
"displayText": "abcd",
"customerAttribute": "",
"saveAsDefault": false,
"ussdDisplayText": "New node1",
"headerForChild": "",
"parentNodeId": 3081,
"Nodes": [],
"concatWithHeader": false,
"nodeCode": "208_3085_1",
"parentCode": "3080",
"extResponseType": 0,
"canAdd": false,
"canEdit": false,
"canDelete": false,
"canView": false,
"setChileNode": false
}
],
"concatWithHeader": false,
"nodeCode": "3080",
"parentCode": "RN",
"extResponseType": 0,
"canAdd": false,
"canEdit": false,
"canDelete": false,
"canView": false,
"setChileNode": false
}
],
"concatWithHeader": false,
"nodeCode": "RN",
"parentCode": "ROOT_NODE",
"responseType": 1,
"responseText": "Thank you!",
"dynamicResponseFlag": false,
"extResponseType": 0,
"canAdd": false,
"canEdit": false,
"canDelete": false,
"canView": false,
"setChileNode": false
}
我希望此对象的属性**nodeId**
的最大值,即3080
我该怎么办?我不想对它进行排序。只需获得最大值。
我试过了:
var data = rootNode;
var maxProp = "nodeId";
var maxValue = -1;
for (var prop in data) {
if (data.hasOwnProperty(prop)) {
var value = data[prop];
if (value > maxValue) {
maxProp = prop;
maxValue = value;
}
}
}
但这会迭代属性,而不是孩子。因此,我只获得第一个值作为最大值。
答案 0 :(得分:1)
试试这个:
var nodes = data.Nodes, // data is your json
maxProp = "nodeId",
maxVal = 0, maxInd = 0;
for (var i = 0; i < nodes.length; i++) {
var value = parseInt(nodes[i][maxProp], 10);
if (value > maxVal) {
maxVal = value;
maxInd = i;
}
}
console.log(nodes[maxInd]) // array with maximal nodeId
答案 1 :(得分:0)
如果您有一个值的数组,您也可以使用Math.max
来确定最大值。使用ES5的数组map
,您可以从节点中提取它。如果您不支持ES5(IE9 +),您还可以使用jQuery或Underscore.js实施。
var maxProp = 'nodeId',
propValues, maxvalue;
propValues = data.Nodes.map(function(node) {
return node[maxProp];
});
maxValue = Math.max.apply(null, propValues);
JSFiddle:http://jsfiddle.net/g2YeW/