这是我的数据: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
现在如何将其重新插入原始数据? 还是我的方法是错误的,我可以立即计算原始数据中每个元素的百分比信息,而无需执行所有这些步骤。
答案 0 :(得分:0)
与其将百分比值保存在单独的数组中,例如,
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);
})