Javascript push-объект в цикл многомерного массива

В настоящее время у меня есть этот многомерный массив:

var locations = [
    ['Event', 'Monday', 50.820250, -0.143534, 'Image', 'fa fa-heart'],
    ['Event 2', 'Tuesday', 50.819939, -0.140978, 'Image', 'fa fa-heart'], 
];

И у меня есть файл JavaScript с этим:

$(function () 
  {
$.ajax({                                      
  url: 'locations.php', data: "", dataType: 'json', success: function(rows)        
  {
    for (var i in rows)
    {
      var row = rows[i];          

      var id = row.id;
      var name = row.name; 
      var date = row.date; 
      var lat = row.lat; 
      var long = row.long;
      var image = row.header;

    var test = "['" + name + "', '" + date + "', " + lat + ", " + long + ", '" + image + "', 'fa fa-heart'],";

    locations.push(test);

          } 

  } 
});

  async: false

});

Он захватывает всю информацию из файла PHP, однако я хотел бы» подтолкнуть » / добавить новое событие в текущий массив для каждого цикла.

Любая помощь очень ценится!

3 ответа

  1. Вы устанавливаете testпеременную в одну длинную строку вместо фактического массива. Чтобы это был массив, можно сделать следующее:

    var test = [name, date, lat, long, image,'fa fa-heart'];
    locations.push(test);
    

    Пример: https://jsfiddle.net/ejqzshy5/

  2. Вы добавляете строку, а не массив.
    Это должно быть:

    var test = [name, date, lat, long, image, 'fa fa-heart'];
    

    Для подтверждения перед вводом теста в массив напечатайте тип. т. е.

    console.log(typeof test);
    

    Если это строка, вы получаете ‘string’ в качестве выходных данных; если это массив, вы получаете ‘object’.

  3. Можно просто создать новый массив для каждой строки, а затем поместить каждый элемент в этот массив. Наконец, вставьте этот новый массив в свой locationsмассив.

    Вот JSBin: http://jsbin.com/zumijib/edit?html, css,js, выход

    for (var i = 0, rowLength = rows.length; i < rowLength; i++) {
      var row = rows[i];
      // create new array
      var newData = [];
    
      // add new data to end of list.
      newData.push(row.name);
      newData.push(row.date);
      newData.push(row.lat);
      newData.push(row.long);
      newData.push(row.image);
      newData.push('fa fa-heart');
    
      // add data to current list of locations.
      locations.push(newData);
    }