JavaScript — присвоение — массив массивов

#php #javascript #asp.net #.net #html

#php #javascript #asp.net #.net #HTML

Вопрос:

 var a = new Array();
var b = new Array();
var c = [a,b];

var str = 'hello,world,nice,day';
for(var i = 0; i < c.length; i  ){
  c[i] = str.split(',');
}
  

После выполнения я хотел бы иметь:

 c = [a, b];
a = ['hello', 'world', 'nice', 'day'];
b = ['hello', 'world', 'nice', 'day'];
  

но на самом деле у меня есть:

 c = [['hello', 'world', 'nice', 'day'], ['hello', 'world', 'nice', 'day']];
a = [];
b = [];
  

могу ли я это исправить?

upd: Решение Raynos действительно приятно. Спасибо.

Комментарии:

1. Я удивлен, что вы получаете a = null, b = null, разве a и b не должны быть пустыми массивами?

2. Когда я написал a = null, b = null, это означает, что они являются пустыми массивами. Извините за мою ошибку.

Ответ №1:

 for(var i = 0; i < c.length; i  ){
  c[i].push.apply(c[i], str.split(','));
}
  

Ответ №2:

split Функция создает новый массив, который хранится в c . Вы должны перебрать массив, возвращаемый split и выполнить c[i].push() для этого значения.

Или просто установите a и b непосредственно на результат split .

Ответ №3:

Потому что вы написали c[i] = str.split(','); — вы должны написать c[i] = str.split(',')[i];
И на самом деле — зачем перебирать это с for ?

Редактировать — Извините, думал, что назначение было c [0], c[1]….

Комментарии:

1. str.split(‘,’)[i]. Вы уверены в ответе?

2. это совсем не то, что он хочет

3. Я уверен в синтаксисе — но я отредактировал свой ответ, не заметил первую часть c = [a,b]