вопрос о структуре данных javascript - PullRequest
0 голосов
/ 28 октября 2010

У меня есть массив:

myArray = [];

К которым я добавляю объекты:

data = [];

myArray.push( {
  elem1: ...,
  elem2: data.push(...);
} );

Итак, elem2 в объекте содержит массив. Как я могу, учитывая myArray добавить новые элементы в массив в elem2? Я попробовал следующее:

myArray[idx].elem2.push("new data");

Но получил сообщение об ошибке, в котором говорится, что elem2.push () не является методом.

Ответы [ 3 ]

2 голосов
/ 28 октября 2010

Строка выдачи:

elem2: data.push(...)

data - это массив. Метод push для массивов не возвращает массив, он возвращает длину массива после добавления элемента.

Так что если у вас есть:

var data = [];

var moreData = data.push(1);

moreData фактически будет равно 1 .

Поскольку значение elem2 на самом деле является целым числом, вы вызываете push для этого целого числа. Вот где вы получаете ошибку.

0 голосов
/ 28 октября 2010

Я попробовал то же самое и работает, посмотрите код:

var a = [];
a.push({

  a: []

});

a[0].a.push("a");

alert(a[0].a[0]); // return 'a'

в вашем массиве вы должны добавить другой массив, а не array.push (), потому что он вернет позицию, в которую были вставлены элементы.

0 голосов
/ 28 октября 2010

Функция .push() не возвращает массив, поэтому строка, которая пытается установить "elem2", ну, это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...