Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Push array into array in Javascript (jQuery)

I've been trying to get the push() method on a loop to build a structure as follows:

var locations2 = [
    ['User', position.coords.latitude, position.coords.longitude, 1],
    ['Bondi Beach', -33.890542, 151.274856, 2],
    ['Coogee Beach', -33.923036, 151.259052, 3],
    ['Cronulla Beach', -34.028249, 151.157507, 4],
    ['Manly Beach', -33.80010128657071, 151.28747820854187, 5],
    ['Maroubra Beach', -33.950198, 151.259302, 6]
];

This is my code:

var locations = [];

$.ajax({
    type: "POST",
    url: "/ajax/map.php",
    data: "name=test",
    dataType: "json",
    cache: false,
    success: function(data){
        $.each(data.points, function(i,item){
            array_push = ["test", parseFloat(item.origem_lat), parseFloat(item.origem_lng), i];
            locations.push(array_push);
        });               
    }
});  

However, the Javascript console.log for locations shows an empty array.

I have tried to use push() in many different ways, but I cannot get the same structure as locations2. The biggest problem here is that I do not know how many arrays are going to be inside the locations array before the loop, so I can't initialize it beforehand.

Any thoughts?

like image 410
rodd Avatar asked Dec 12 '12 00:12

rodd


People also ask

Can you push an array into an array JavaScript?

Adding Array into the Array using push() To add an array into an array in JavaScript, use the array. push() method. The push() function allows us to push an array into an array.

How do you push an array of objects into another array?

Use the concat function, like so: var arrayA = [1, 2]; var arrayB = [3, 4]; var newArray = arrayA. concat(arrayB); The value of newArray will be [1, 2, 3, 4] ( arrayA and arrayB remain unchanged; concat creates and returns a new array for the result).

How do you add an array to an array of arrays?

To append one array to another, call the concat() method on the first array, passing it the second array as a parameter, e.g. const arr3 = arr1. concat(arr2) . The concat method will merge the two arrays and will return a new array. Copied!


1 Answers

I figured out what the problem is. It has nothing to do with the push() method itself. Apparently ajax calls are not executed in sequential order (that's the reason it's asynchronous). I added async: false in the ajax call options and now everything works perfectly.

Thanks everyone for the input.

like image 89
rodd Avatar answered Sep 25 '22 06:09

rodd