在下面的代码中,我试图传递realdata [0] = 700&的值。 realdata [1] = 300到绘制方法。
return {label:d.label,value:realdata [i],color:d.color}; ++ I;
然而逻辑不起作用?有人可以指导我,我是javascript的新手。
var salesData=[
{label:"Used", color:"#FF3300"},
{label:"Free", color:"#00FF00"}
];
Donut3D.draw("salesDonut", randomData(), 150, 150, 150, 120, 30, 0.3);
function randomData(){
var realdata = [700,300];
var i=0;
return salesData.map( function(d){
return {label:d.label, value:realdata[i], color:d.color}; ++i;
} );
}
答案 0 :(得分:1)
在您的代码中,您在return语句之后放置了增量逻辑,这意味着i
永远不会递增。您可以将逻辑更改为:
// post increment i inline
return {label:d.label, value:realdata[i++], color:d.color};
但是,Array.map
将传递当前值,当前值的索引和原始数组。
不是单独跟踪索引,而是将randomData函数更改为:
function randomData(){
var realdata = [700,300];
return salesData.map( function(d, idx){
return {label:d.label, value:realdata[idx], color:d.color};
});
}
将导致:
[{"label":"Used","value":700,"color":"#FF3300"},
{"label":"Free","value":300,"color":"#00FF00"}]
答案 1 :(得分:0)
++i
无法在return
语句之后执行,该语句会停止并退出function
。因此,i
的值不会在map
的迭代之间发生变化。
要解决此问题,您可以在i++
语句中使用后缀增量return
(增量,但返回前值):
return { label: d.label, value: readdata[i++], color: d.color };
或者,.map()
将提供索引值作为迭代器的第二个参数:
function randomData(){
var realdata = [700,300];
return salesData.map(function (d, i) {
return { label: d.label, value: readdata[i], color: d.color };
});
}