Как назначить значения массива A массиву B в JS / appscript? - PullRequest
0 голосов
/ 03 марта 2019

Я разрабатываю некоторые инструменты Stock с AppScript, и теперь я не знаю, почему я не могу присвоить значения массива A массиву B. Может ли кто-нибудь мне помочь?

Я хочу скопировать values_array [l] [0] -> dataArray [l] [0]

Не могли бы вы дать мне решение, пожалуйста?

//Filled up the array for MACD 
// var dataArray = [["Stock","Date","Close Price","EMA12","EMA26","DIF","Signal"]];
var dataArray = [];
var accumulationEMA12 = 0;

for (var l = 0; l < values_array.length - 1; l++) // Get the previous day EMA12
{
  var temp = values_array[l][5];

  //  var accumulationEMA12 = accumulationEMA12 + values_array[l][5];

  var accumulationEMA12 = accumulationEMA12 + temp;

  dataArray[l][0] = values_array[l][0]; // Fill Up the Stock No. <-Here
  dataArray[l][1] = values_array[l][1]; // Fill UP the Date <-Here


  if (l < 11) //if the dataset is < 12 rows or < 26 rows, calculate the average instead of EMA
  {

  }
}

 //Filled up the array for MACD 
   // var dataArray = [["Stock","Date","Close Price","EMA12","EMA26","DIF","Signal"]];
    var dataArray = [];
    var accumulationEMA12 = 0;
    
    for(var l = 0; l< values_array.length-1; l++) // Get the previous day EMA12
    {  
      var temp = values_array[l][5];
   
    //  var accumulationEMA12 = accumulationEMA12 + values_array[l][5];
      
      var accumulationEMA12 = accumulationEMA12 + temp;

      dataArray[l][0] = values_array[l][0]; // Fill Up the Stock No.
      dataArray[l][1] = values_array[l][1]; // Fill UP the Date
      
          
      
      if(l < 11) //if the dataset is < 12 rows or < 26 rows, calculate the average instead of EMA
      {
       
      }
    }

Значения_ массив здесь enter image description here

1 Ответ

0 голосов
/ 03 марта 2019

Я думаю, что вы получаете ошибку в строке

dataArray[l][0] = values_array[l][0];

Потому что, я не вижу, что вы инициировали dataArray[l].В вашем коде dataArray[l] равно undefined, поэтому, когда вы пытаетесь сделать что-то вроде dataArray[l][1], вы по существу делаете undefined[1], который выдаст ошибку типа

Uncaught TypeError: Cannot read property '1' of undefined

Так что вам нужночтобы сделать это, убедитесь, что dataArray[l] сам массив.Примерно так

var dataArray = [];
for (var l = 0; l < values_array.length; l++) {
  // make sure dataArray[l] exists
  dataArray[l] = [];

  // do your operations
  dataArray[l][0] = values_array[l][0];
  dataArray[l][1] = values_array[l][1];

  // other code.
}

Хотя я бы предложил использовать современные функции языка JS, такие как

const dataArray = [];
values_array.forEach((val, index)=> {
  // notice that we are assigning a new array to dataArray[index] 
  dataArray[index] = [
    val[0],
    val[1],
  ];

  // do other operations like
  if (index < 11) {
    // do stuff
  }
});

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...