Answer the question
In order to leave comments, you need to log in
How does accessing an object property through square brackets work?
Good afternoon!
Please help me understand the syntax:
var arr1 = ["andesite", "dirt", "pink wool", "dirt", "dead shrub"];
var counts = {}; //из значений массива делаем ключи объекта,
//а из количества их повторений в массиве делаем их свойства
for( var i=0, l=arr1.length; i<l; i++) {
counts[arr1[i]] = (counts[arr1[i]] || 0) + 1; // что это? я понимаю, что это
//операция присвоения свойства ключу,
} // но как оно работает - не пойму.
console.log(counts);
Answer the question
In order to leave comments, you need to log in
counts[arr1[i]] = (counts[arr1[i]] || 0) + 1;
// если свойство count[arr1[i]] уже есть в объекте arr1
// то мы получаем значение свойства (число) и увеличиваем на 1
// если свойства count[arr1[i]] нет в объекте,
// то оно создается и записывается значение этого свойства 1
// При первой итерации при i=0 у вас создается свойство в объекте arr1['andesite']
// и ему присваивается 1
arr1['andesite'] = ( arr1['andesite'] || 0 ) + 1; // => arr1['andesite'] = 0 + 1;
// и так с каждым новым свойством
// далее это свойство при необходимости просто увеличивает свое значение
counts[arr1[i]] = (counts[arr1[i]] || 0) + 1;
counts[arr1[i]] you equate, if present arr1[i] -> counts[arr1[i]] + 1, if not 0 + 1
If we declare through [] then we can create like ossential arrays in js.
var arr = ["Andrey","Petia","Gamer"];
var obj={};
for(var i =0,l=arr.length;i<l;i++){
//мы вольны создавать произвольные свойства в объекте
// через дот нотацию мы такое не можем позволить, для неё нам нужно реально указать имя свойства obj.Andrey ="name";
obj[arr[i]] = "name";
}
var obj = {};
//нам надо сделать свойство название которого являеться значение какой-нeто переменной
var name="Andrey";
//для этого сделаем так
obj[name]="это имя";
//для того чтобы сделать это через точку мы должны явно указать имя а не из переменной его взять
var obj={};
obj.Andrey="это имя";
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question