3 回答
TA贡献1808条经验 获得超4个赞
我在下面尝试过,并且可以完美地处理任何数量的数据集。
var lastVisible;
var datasetsLength = this._chart.data.datasets.length;
this._chart.data.datasets.map((e,index)=>{
lastVisible=datasetsLength-1;
//to find the depth of datasets and get non-zero value
for(var i=lastVisible;i>0;i--){
if(!this._chart.getDatasetMeta(i).hidden){
if(this._chart.data.datasets[i].data[this._index] != 0){
lastVisible = i;
break;
}
}
}
})
TA贡献1850条经验 获得超11个赞
我已经更新了您的 Fiddle 唯一行号118: https ://jsfiddle.net/r7hvn2ox/
从:
if (rounded){至:
if (rounded || this._chart.data.datasets[1].data[this._index] == 0) {我知道它对 2 个数据集的修复:[{}, {}] 条,但它可以在任何数据集的值以及本示例中完美地工作。
TA贡献1829条经验 获得超6个赞
rounded如果它呈现特定项目,您可以向变量添加额外的表达式。这不是最好的方法。
var rounded = this._datasetIndex === lastVisible || this._index === 2;
或者,您可以比较每个数据集中的值
var cond = false;
if(this._datasetIndex === 0) {
var datasets = this._chart.data.datasets;
var dataset = datasets[this._datasetIndex];
var currentData = dataset.data[this._index];
var nextData = datasets[this._datasetIndex + 1].data[this._index]
cond = currentData !== 0 && nextData === 0;
}
var rounded = this._datasetIndex === lastVisible || cond;
添加回答
举报
