Я в цикле добавляю элементы в массив.
Вот упрощенный код:
for (var i = 1; i <= 3; i++) {
if(!arr['foo']) {
arr['foo'] = [];
}
arr['foo'].push('bar');
}
Можно ли как то избежать проверки, перед присваиванием элементов в массив?
В php это делается так:
$arr['foo'][] = 'bar';
Можно заранее инициализировать нужные объекты:
arr = {}
arr['foo'] = []
for (var i = 1; i <= 3; i++) {
arr['foo'].push('bar');
}
console.log(arr)
Или:
items = []
for (var i = 1; i <= 3; i++) {
items.push('bar');
}
arr = {}
arr['foo'] = items
// Или:
// arr = {
// foo: items
// }
console.log(arr)
Без проверки нельзя, потому что метод push() он же собственно у массива вызывается.
Более короче можно сделать так
var arr = {};
(arr.foo = arr.foo || []).push('bar');
(arr.foo = arr.foo || []).push('bar');
(arr.foo = arr.foo || []).push('bar');
(arr[1] = arr[1] || []).push('bar');
(arr[1] = arr[1] || []).push('bar');
(arr[1] = arr[1] || []).push('bar');
console.log(arr);
Или так
var arr = {};
(arr.foo || (arr.foo = [])).push('bar');
(arr.foo || (arr.foo = [])).push('bar');
(arr.foo || (arr.foo = [])).push('bar');
(arr[1] || (arr[1] = [])).push('bar');
(arr[1] || (arr[1] = [])).push('bar');
(arr[1] || (arr[1] = [])).push('bar');
console.log(arr);
Продвижение своими сайтами как стратегия роста и независимости