views:

68

answers:

2

I have an array, as below:

var cString =   [
            ['1','Techdirt','www.techdirt.com'],
            ['2','Slashdot','slashdot.org'],
            ['3','Wired','wired.com']
            ];

to this array I want to add another in the same format:

var test = ['4','Stackoverflow','stackoverflow.com']

I've tried using:

var newArray = $.merge(cString, test);

But console.log(newArray); outputs:

[►Array,►Array,►Array,'4','Stackoverflow','stackoverflow.com']

So I'm assuming that I'm missing something obvious. Or attempting something stupid...help?

+6  A: 

jQuery is not needed for this. Just use the Array's .push() method to add it to the main array.

var test = ['4','Stackoverflow','stackoverflow.com']

cString.push( test );

What $.merge() does is it walks through the second array you pass it and copies its items one by one into the first.


EDIT:

If you didn't want to modify the original array, you could make a copy of it first, and .push() the new Array into the copy.

var cString =   [
            ['1','Techdirt','www.techdirt.com'],
            ['2','Slashdot','slashdot.org'],
            ['3','Wired','wired.com']
            ];

var test = ['4','Stackoverflow','stackoverflow.com']

var newArray = cString.slice();

newArray.push( test );
patrick dw
Uhm, `console.log(newArray)` now returns `4` =/
David Thomas
@David - You sure about that? http://jsfiddle.net/XLVxw/1/ `4` would be the appropriate Array `length` property value.
patrick dw
@David - Oh, I see what you're doing. The `.push()` method modifies the original array, and returns the new length. That's why your `newArray` variable shows `4`.
patrick dw
@Patrick, yup I'm fairly certain =b And, seriously, thanks for the `forDummies()` jsfiddle demo. It was needed =) +1, and accepted!
David Thomas
@David - You're welcome! I should have paid more attention to the code in your question in the first place. :o)
patrick dw
+1  A: 

In addition to push as described by patrick, if you want to create a new list rather than changing the old, you can add arrays together with Array#concat:

var newArray= cString.concat([['4','Stackoverflow','stackoverflow.com']]);
bobince
@bobince - Correct me if I'm wrong, but I think that would give OP the same result that `$.merge` was giving. I think you would need to do `cString.concat([['4','Stackoverflow','stackoverflow.com']])` instead.?
patrick dw
You're absolutely right. Thanks for catching the fingerfail!
bobince