Declare empty array in javascript

41,825

Solution 1

In the succes of your ajax call use the function push()

product.push([]);

This adds an array at the last index of product. Like that ,the index 10 is created and you have an extra data.

If you want to add a dynamic number of rows, use this code :

var number_of_new_row = 11; // 11 for example, you can use any number >= 0
for(; number_of_new_row--;)
    product.push([]);

Another way

In your ajax return save the new length of your array product in a global variable. And use it before your loop to reset your array and initialize it with the new length.

var lengthArray = 10; // update the value in the callback of your ajax call

And your loop :

var product = [];
for(; lengthArray--;)
    product.push([]);

$('#contextreload ul').each(function(i, ul) {
    //<strike> var product = $(ul).html();  </strike>
    allline = i; 

    $('#reloadajax'+i+' li').each(function(lk, li) {
        var lilk = $(li).html();  
        product[i][lk]=lilk;
        alert(lilk+lk);
        // your code goes here
    });
    // your code goes here
});

Solution 2

Note: this line of your code produces a string, not an array.

var product = $(ul).html();  //returns string not an array

what you need is something like

var product_arr = {}; // an object or 
var product_arr = []; // an array

Solution 3

The following code used to declare empty array in javascript

var product_arr = new Array(); //declaring empty array

console.log(product_arr);
Share:
41,825
user3944364
Author by

user3944364

Updated on July 05, 2020

Comments

  • user3944364
    user3944364 almost 4 years

    update

    My code that works. When page is loaded

        product= [[],[]]; 
    

    then the code executed after ajax call:

    $('#contextreload ul').each(function(i, ul) {
    product.push([]);
    });
    
    $('#contextreload ul').each(function(i, ul) {
      allline=i; 
      $('#reloadajax'+i+' li').each(function(lk, li) {
      var lilk = $(li).html();  product[i][lk]=lilk;
    
      // your code goes here
     });
    
      // your code goes here
    });
    

    To use eval(); in ajax response for this, with some changes in php file? /endupdate

    product[0]=[1,2,3,4];

    product[1]=[a,b,x,z];

    .

    .

    product[10]=[extra,extra,extra,extra];

    When I load the page this is executed: product= [[],[],[],[],[],[],[],[],[],[]];

    But if I declare this, when I call ajax I can push add data only to this array (10 rows) If I have 11 rows (product[10][0] and product[10][1]), the extra data will not be added. After ajax call I need the extra data : product= [[],[],[],[],[],[],[],[],[],[],**[11]**];

    This function is because I want to put data in array after loading ajax data from php file.

    $('#contextreload ul').each(function(i, ul) {
     <strike> var product = $(ul).html();  </strike>
        allline = i; 
    
        $('#reloadajax'+i+' li').each(function(lk, li) {
            var lilk = $(li).html();  
            product[i][lk]=lilk;
            alert(lilk+lk);
            // your code goes here
        });
        // your code goes here
    });
    
    
    }