Function 'concat' (in JavaScript) is not working for associative arrays

Arrays in JavaScript have only numerical keys. Only objects can have non numerical properties. So try this instead:

var firstArray = {};
firstArray.c1 = "sam";
firstArray.c2 = "kam";
var secArray =  {};
secArray.c3 = "sam";  
secArray.c4 = "kam";

for (var prop in secArray) {
    if (secArray.hasOwnProperty(prop)) {
        firstArray[prop] = secArray[prop];
    }
}

You are not using Array functionality - just Object functionality. In JavaScript, Object is an associative array - you use Array for arrays indexed by integers. If you did

var firstArray =  new Array();
firstArray.push("sam");  
firstArray.push("kam");
var secArray =  new Array();
secArray.push("sam");    
secArray.push("kam");
var res = firstArray.concat(secArray);

then concat would work as expected.

If you actually want to merge associative arrays, do:

for (var attr in src_array) { dest_array[attr] = src_array[attr]; }

This will of course overwrite existing keys in dest_array which have counterparts in src_array.


Try this:

var firstArray = new Array("sam", "kam");
var secArray = new Array("sam", "kam");
var res = firstArray.concat(secArray);