繁体   English   中英

正确迭代JavaScript中数组的前n个元素

[英]Correctly iterating over first n elements of an array in javascript

我在执行以下代码段时遇到麻烦。 它是更大的python Bokeh绘图的回调代码。 由于我对javascript的使用经验有限,因此我从这个问题中汲取了关于如何在javascript中遍历数组的问题。

这是修改后的对象s2 = ColumnDataSource(data=dict(x=[],y1=[],y2=[],y3=[], y4=[]))

  var inds = cb_obj.get('selected')['1d'].indices; // Obtains column numbers
  var d1 = m1.get('data'); // Obtains matrix with numbered columns that correspond to inds
  var d2 = s2.get('data'); // Plotted data columns that get modified according to inds
  var ys = ['y1','y2','y3','y4']; // Array of names of columns in d2/s2
  var j, y, select= ys.slice(0,inds.length+1), // Limit number of columns to number of inds

  //This piece is from the linked question -  a loop through select (e.g only 'y1' and 'y2')
  var len = select.length;
  for(j=0; j<len; ++j) {
    if (j in select) {
      y = selected[j]; 
      // For each selected name of a column
      d2[y] = [];  // Erase current value
      // Fill the column from d1  (12 is just the length of the column)
      for (var i = 0; i < 12; i++) {
        d2[y].push(d1[inds[j]][i]),
      }
    }
  }
  s2.trigger('change');

当仅将两个索引传递给y1,y2的预定义数量时,第二个循环就可以正常工作。 但是我的目标是使选择大小动态化,即对于从外部向下传递到inds的不同数量的索引(例如[1,5,65,76]或[1,8]),代码将填充适当的数字ys,因此y1,y2,y3,y4或仅y1,y2,数据来自d1 / m1。

从我可以看出的代码中,“应该”就是这样做,但是我显然看不到任何东西。

为了进行比较,这里使用的是以前的代码版本,但仅限于两个索引。

  var inds = cb_obj.get('selected')['1d'].indices;
  var d1 = m1.get('data'); 
  var d2 = s2.get('data');
  d2['y'] = []
  d2['y2'] = []
  for (i = 0; i < 12; i++) {
    d2['y1'].push(d1[inds['0']][i]),
    d2['y2'].push(d1[inds['1']][i])
  }
  s2.trigger('change');

是完整的(Python)示例数据,可以实现更好的可视化。

我想到了。 该行末尾有一个逗号

d2[y].push(d1[inds[j]][i])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM