NODE.JS Прототип многомерного / субмассива PUSH - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь отсортировать данные в соответствующую категорию массива после анализа;

Сначала давайте инициализируем мой массив следующим образом.

const foo = {
    bar: {},
    bar2: {}
}

Я не могу использовать, например, прототип .push в сборке подмассива.

foo.bar.push('foobar');

Я получу ошибку:

TypeError: Cannot read property 'push' of undefined

Массив был инициализирован с использованием первого блока кода.

Я также попытался использовать следующее и получить такой же ответ от консоли.

foo[0].push('foobar');

Как можно отправить данные вподмассив?

БОНУСНЫЕ ТОЧКИ / PS. Как называется этот вид массива? Это подмассивный или многомерный массив или нет?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 15 октября 2019

То, что вы объявляете, является объектом, а не массивом.

const foo = {
    bar: {},
    bar2: {}
}

В этом случае bar и bar2 оба являются объектами, а не массивом. И push не доступен для прототипа объекта.

Используйте это для объявления массивов внутри объекта.

const foo = {
    bar: [],
    bar2: []
}
0 голосов
/ 15 октября 2019

Кристофер, ошибка говорит о том, что говорится, потому что невозможно вставить элемент в объект , но только в массив .

Проверьте эту страницу out, которая различает два.

Чтобы установить значение ключа внутри объекта, который вы делаете: <your_object>.<your_key>= <your_value>;

Чтобы вставить элемент в массив, вы должны: <your_array>.push(<your_element>);

Следовательно, элементы bar внутри foo должны быть массивами => [], а не объектами;

В вашемВ данном случае вы, кажется, хотите вставить элемент "foobar" в массив bar внутри объекта foo.

. Для этого все, что вам нужно сделатьэто:

const foo = {
    bar: [],
    bar2: []
}
foo.bar.push('foobar');
0 голосов
/ 15 октября 2019

Я бы добавил к ответу shubham-gupta, что если вы хотите нажать на foo, вы должны также объявить его как массив:

const foo = [{
    bar: [],
    bar2: []
}]
...