[英]How to insert a property into the leaf nodes of a nested array?
这是我的数据: https : //api.myjson.com/bins/pmzf0
我使用以下函数检索该数据的所有叶节点:
function getLeafNodes(nodes, result = []) {
for (var i = 0, length = nodes.length; i < length; i++) {
if (!nodes[i].children) {
result.push(nodes[i]);
} else {
result = getLeafNodes(nodes[i].children, result);
}
}
return result;
}
这是返回的结果: https : //api.myjson.com/bins/12qiq4
然后,我通过获取每个元素的最大值,然后将其乘以1.2得到我的目标值,从而计算出每个元素的百分比信息。
var maxVal = Math.max.apply(Math, leafs.map(function (o) { return o.value; }))
var targetVal = maxVal * 1.2;
然后,使用以下代码获取每个元素的百分比数组:
var percentageData = leafs.map(function (o) {
return { percentage: (o.value / targetVal * 100).toFixed(2) };
})
这将返回一个百分比数据数组: https : //api.myjson.com/bins/mnte4
现在如何将其重新插入原始数据中? 还是我的方法是错误的,我可以立即计算原始数据中每个元素的百分比信息,而无需执行所有这些步骤。
而不是将百分比值保存在单独的数组中,
var percentageData = leafs.map(function (o) {
return { percentage: (o.value / targetVal * 100).toFixed(2) };
})
您可以使用foreach向叶子添加新的百分比字段,例如
leafs.forEach(function (o) {
o['percentage'] = (o.value / targetVal * 100).toFixed(2);
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.