2013-11-22 4 views

ответ

3

Вы можете специально создать новый массив, передав в обоих переменных нового конструктора массива, или с помощью [ ] стенографии, как показано ниже:

var newArr = [ a, b ]; 
0
var twodArray=[['a','b','c'],['x','y','z'] ]; 

or var twodArray=[a,b]; 
+0

2dArray' является недопустимым имя переменной. Имена переменных не могут начинаться с цифры. –

+0

Да, я забыл, что .. Я только что отредактировал – uhs

1

определить переменную, с и установить его в качестве массив и нажмите и a, и b в него. Он будет делать то, что вы ожидаете.

var a = ['a','b','c']; 
var b = ['x','y','z']; 

var c=[]; 
c.push(a); 
c.push(b); 

Вот рабочая скрипка (откройте консоль в хромированном корпусе [F12]). http://jsfiddle.net/28MnN/

+0

+1 для решения, которое работает с переменным количеством массивов. – Tibos

+1

Так будут и другие ... – BenM

+0

@BenM Другое решение работает только в том случае, если вы знаете количество требуемых массивов. Если у вас есть исходные массивы в качестве значений на карте, это не сработает: 'for (var key in map) {c.push (map [key]); } ' – Tibos

0

Я добавил третью переменную с именем c, который ссылается на тот же массив, как a:

var a = ['a', 'b', 'c']; 
var b = ['x', 'y', 'z']; 
var c = a; // a === c 

После решения отлично работает, однако, после того, слившись a и b, любые изменения на a воны «т отразится на c больше, так как a и c будут относиться к разным объектам:

a = [a, b]; // a !== c 
a.push('something'); 
console.log(a); // [["a", "b", "c"], ["x", "y", "z"], "something"] 
console.log(c); // ["a", "b", "c"] 

Это второе решение позволяет избежать ситуации выше:

a.push(a.splice(0), b); // a === c 
a.push('something'); 
console.log(a); // [["a", "b", "c"], ["x", "y", "z"], "something"] 
console.log(c); // [["a", "b", "c"], ["x", "y", "z"], "something"] 
Смежные вопросы