7

Can I merge two arrays in JavaScript like this?

these arrays:

arr1 = ['one','two','three'];
arr2 = [1,2,3];

into

arr3 = ['one': 1, 'two': 2, 'three' : 3]
7
  • 4
    This isn't really an array merge as much as it is a combine. Commented Jul 14, 2012 at 20:24
  • 1
    You can do it manually in a simple for loop. Commented Jul 14, 2012 at 20:24
  • 4
    jQuery is not a language. Also, JavaScript doesn't have associative arrays, just objects. Commented Jul 14, 2012 at 20:24
  • 1
    What would be the point, if you could just reference two corresponding entries based on them sharing the same array index? Commented Jul 14, 2012 at 20:26
  • 1
    @davidethell: That's not the same thing. Commented Jul 14, 2012 at 20:26

5 Answers 5

12
var arr3 = {};
for (var i = 0; i < arr1.length; i++) {
    arr3[arr1[i]] = arr2[i];
}

Please note that arr3 is not array, it is object.

Sign up to request clarification or add additional context in comments.

Comments

8

You can use Array.prototype.reduce...

var arr3 = arr1.reduce(function(obj, val, i) {
    obj[val] = arr2[i];
    return obj;
}, {});

DEMO: http://jsfiddle.net/GMxcM/

{
    "one": 1,
    "two": 2,
    "three": 3
}

Comments

2

Just because you said in jQuery, here's a jQuery$.each version.

arr1 = ['one','two','three'];
arr2 = [1,2,3];
arr3 = {};
$.each(arr1, function(i, value){
  arr3[value] = arr2[i];
});
console.log(JSON.stringify(arr3));

output ->

{"one":1,"two":2,"three":3}

here's a working jsFiddle

Comments

1

Loop!

var arr1 = ['one','two','three'];
var arr2 = [1,2,3];
var result = {};

for(var i = 0; i < arr1.length; i++) {
    result[arr1[i]] = arr2[i];
}

Comments

-1

Even easier:

$.merge(arr1, arr2);

1 Comment

This is not what he wants!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.