Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对数组进行排序,并将项目放入图表中_Javascript - Fatal编程技术网

Javascript 对数组进行排序,并将项目放入图表中

Javascript 对数组进行排序,并将项目放入图表中,javascript,Javascript,我正在使用PlotlyJS生成一个简单的折线图。我需要的数据来自数组的数组。我的javascript技能不强 使用控制台日志,我可以看到阵列: 问题是我需要根据id对其进行排序(请参阅下面的console.log) 首先,我创建了一个for循环: for (data in ndvi_array) { console.log('id: '+ndvi_array[data][0]+', data: '+ndvi_array[data][1]+', index: '+ndvi_array[dat

我正在使用PlotlyJS生成一个简单的折线图。我需要的数据来自数组的数组。我的javascript技能不强

使用控制台日志,我可以看到阵列:

问题是我需要根据id对其进行排序(请参阅下面的console.log)

首先,我创建了一个for循环:

for (data in ndvi_array) {
  console.log('id: '+ndvi_array[data][0]+', data: '+ndvi_array[data][1]+', index: '+ndvi_array[data][2]);

    var data = [
      {
        x: ndvi_array[data][1],
        y: ndvi_array[data][2],
        type: 'scatter'
      }
    ];

    Plotly.newPlot('ndvi-index', data);

};
console.log(ndvi_array[data][0].sort((a,b)=>a-b));
然后,我尝试在for循环中使用以下代码对数组进行排序:

for (data in ndvi_array) {
  console.log('id: '+ndvi_array[data][0]+', data: '+ndvi_array[data][1]+', index: '+ndvi_array[data][2]);

    var data = [
      {
        x: ndvi_array[data][1],
        y: ndvi_array[data][2],
        type: 'scatter'
      }
    ];

    Plotly.newPlot('ndvi-index', data);

};
console.log(ndvi_array[data][0].sort((a,b)=>a-b));
使用此选项时,我会看到错误:

未捕获类型错误:ndvi_数组[data][0]。排序不是函数


如何解决它?

您可以对输入数组(ndvi_数组)进行排序,如下所示-

var输入阵列=[
[2,‘abc’,123],
[12,'阿布德',124],
[1,‘abe’,125],
[7,‘abf’,126]
]
排序(([id1],[id2])=>id1-id2)

console.log(inputArray)
您可以根据我们想要在示例中使用的
索引对数组进行排序,我们在数组的数组中只有
1
值,因此我们将使用数组的
0
索引

让ndvi_数组=[[0]、[5]、[3]、[1]、[9]]
让SorterDarray=ndvi_数组进行排序(函数(a,b){
返回b[0]-a[0];
});

log(sortedArray)
当您尝试排序方法时,它是在处理值而不是数组

假设我们有一个数组: x=[[6],[2]]

  • x[0]-我们正在访问第一个值,它是一个数组[6]

  • x[0][0]-我们正在访问第一个数组的第一个值,即6

如果我们尝试x[0][0].sort(),我们将得到错误,因为sort是数组方法

正确的一点:

x = [[6],[2],[1],[8]]
x.sort(function(a,b){ return a[0]- b[0] })

根据您的指示,我看到了相同的错误:
uncaughttypeerror:ndvi_数组[data][0]。排序不是一个函数
Yes,因为ndvi_数组[data][0]不是数组,只需使用ndvi_数组即可。sort(..)您好!虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。