Javascript循环 - 创建变量名称

时间:2017-06-10 23:31:19

标签: javascript

这个javascript代码从我的服务器加载一个csv文件并创建一个变量。

var dateObj = new Date();
var day = dateObj.getUTCDate();
var month = dateObj.getUTCMonth() + 1;
var year = dateObj.getUTCFullYear();
var zpetne = 5;

    function load() {
      for (var y = month - zpetne; y < month; y++) {
        $.ajax({
          url: 'LINK_TO_SITE/CSV_FILES'+ y +'-17.csv',
          dataType: 'text',
        }).done(systemCZ);

        function systemCZ(data) {
          window.aktivitaData = data;
        }
      }
    }

问题是每次运行循环都会覆盖aktivitaData中的先前数据。我尝试将我的变量编辑为

window.aktivitaData + y = data;

但它不起作用。我找不到任何解决方案来获得aktivitaData1,aktivitaData2等等。我怎样才能声明变量?

2 个答案:

答案 0 :(得分:0)

由于window是一个对象,您可以创建如下的动态属性:

var propertyName = 'aktivitaData' + y;
window[propertyName] = data;

假设ytest,您可以data访问aktivitaDatatest

答案 1 :(得分:0)

您可以使用数组来跟踪数据的历史记录。您可以使用.push()将其添加到数组中,并按照aktivitaData[0]之类的索引访问数据,以获取第一个数据,如下所示

var aktivitaData = []; //first intialize it as empty
var dateObj = new Date();
var day = dateObj.getUTCDate();
var month = dateObj.getUTCMonth() + 1;
var year = dateObj.getUTCFullYear();
var zpetne = 5;

function load() {
  for (var y = month - zpetne; y < month; y++) {
    $.ajax({
      url: 'LINK_TO_SITE/CSV_FILES' + y + '-17.csv',
      dataType: 'text',
    }).done(systemCZ);

    function systemCZ(data) {
      window.aktivitaData.push(data);
    }
  }
}

function printAll() {
  for (var i = 0; i < window.aktivitaData.length; i++)
    console.log(window.aktivitaData[i]);
}