Javascript d3.js如何为所有json对象值的总和创建一个段落元素
我有一个d3函数,它尝试执行以下任务:Javascript d3.js如何为所有json对象值的总和创建一个段落元素,javascript,html,json,d3.js,Javascript,Html,Json,D3.js,我有一个d3函数,它尝试执行以下任务: 从json文件读取 获取所有“计数”值的总和 返回一个段落元素,该元素表示“此范围内的(总和(计数))订单总数” 我遇到的问题是,它为数据中的每个对象创建了多个段落元素。例如,数据总共有4个对象,因此它返回4个段落语句。无论数据中有多少个对象,我如何优化它以只返回一个p元素,或者是否有更好的方法来完成上面列出的任务 数据: D3脚本 d3.json('orderQuantities.json', function(data) {
d3.json('orderQuantities.json', function(data) {
Array.prototype.sum = function (prop) {
var sum = 0
for ( var i = 0, _len = this.length; i < _len; i++ ) {
sum += this[i][prop]
}
return sum
}
console.log(data.sum("Count"))
d3.select('body')
.selectAll('p')
.data(data)
.enter()
.append('p')
.text(function(d) {
return 'Total of ' + data.sum("Count") + ' orders from this time range.';
});});
d3.json('orderQuantilities.json',函数(数据){
Array.prototype.sum=函数(prop){
var总和=0
对于(变量i=0,_len=this.length;i<_len;i++){
总和+=本[i][prop]
}
回报金额
}
console.log(data.sum(“Count”))
d3.选择('主体')
.selectAll('p')
.数据(数据)
.输入()
.append('p')
.文本(功能(d){
返回'Total of'+data.sum(“Count”)+'来自此时间范围的订单';
});});
提前谢谢 为了让脚本正常工作,我在脚本中做了一些更改
selectAll('p')
,因为您没有更新任何现有的p
元素。相反,您希望在文本/数据中附加一个新的.data(data).enter()
,因为这将根据您的数据附加元素,我们不希望这样。我们只需要一个p
元素,而不是四个 d3.select('body')
.append('p')
.text(function(d) {
return 'Total of ' + data.sum("Count") + ' orders from this time range.';
});
jsiddle-您可以使用sum
Count
,而不是创建一个sum
函数;将data.sum(“Count”)
替换为data.reduce(函数(acc,curItem){return acc+curItem.Count},0)
应该可以工作。嘿,谢谢!这很有效。您是否能够协助处理此相关D3请求?
d3.select('body')
.append('p')
.text(function(d) {
return 'Total of ' + data.sum("Count") + ' orders from this time range.';
});