早上好,
我正在学习Javascript,我在使用循环创建对象和数组时遇到了一些麻烦。我确信这是一个简单的解决方案,但我无法通过阅读一些例子找到解决问题或计算出来。
用于绘制两个变量的绘图代码如下:
var trace1 = {
x: [0, 1, 2, 3, 4],
y: [0, 1, 2, 3, 4],
type: 'scatter'
};
var data = [trace1];
Plotly.newPlot('myDiv', data);
但是当我尝试通过for循环创建x和y然后用这些数组填充对象trace1时,似乎无效。图形出现但内部没有数据。
var x = [];
for ( i = 0 ; i < 5; i++)
x.push(x[i]=i);
var y = [];
for ( i = 0 ; i < 5; i++)
y.push(y[i]=i);
var type = 'scatter'
trace1 ={x, y, type}
var data = [trace1];
Plotly.newPlot('myDiv', data);
感谢您的帮助。
答案 0 :(得分:1)
您应该将x.push(x[i]=i)
更改为x.push(i)
。您使用的前者正在执行两项操作:首先设置x[i] = i
,然后将评估结果(i
)推到x
的末尾
答案 1 :(得分:0)
原因是,在数组中有一个额外的条目是在第一次迭代后array x
看起来像x[0] = and x[1] = 0
。在第二次迭代后,它看起来像
x[0] = 0, x[1] = 1 and x[2] = 1
。同样适用于y array
。这是由于为数组赋值以及推送赋值结果的副作用。这样,它在每次迭代中都会添加一个额外的条目。
你需要这样做:
var x = [];
for (i = 0; i < 5; i++)
x.push(i);
var y = [];
for (i = 0; i < 5; i++)
y.push(i);
var type = 'scatter'
trace1 = {
x,
y,
type
}
var data = [trace1];
console.log(x);
console.log(y);
//Plotly.newPlot('myDiv', data);
答案 2 :(得分:0)
您可以尝试此代码
javax.*
&#13;
答案 3 :(得分:0)
您需要创建与第一个代码示例相同的对象。
var xArr = [];
for ( i = 0 ; i < 5; i++) {
xArr.push(i);
}
var yArr = [];
for ( i = 0 ; i < 5; i++) {
yArr.push(i);
}
var typeString = 'scatter'
trace1 = {
x: xArr,
y: yArr,
type: typeString
}
var data = [trace1];
Plotly.newPlot('myDiv', data);