M
M
Max Rudik2015-11-10 22:22:58
JavaScript
Max Rudik, 2015-11-10 22:22:58

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);

Thanks in advance for the educational program)

Answer the question

In order to leave comments, you need to log in

3 answer(s)
K
keslo, 2015-11-10
@keslo

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; 

// и так с каждым новым свойством
// далее это свойство при необходимости просто увеличивает свое значение

M
Maxim Nepritimov, 2015-11-10
@nepritimov_m

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

A
Andrey Dyrkov, 2015-11-10
@VIKINGVyksa

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";   
}

if bonalno then here is the difference
var obj = {};
//нам надо сделать свойство название которого являеться значение какой-нeто переменной
var name="Andrey";

//для этого сделаем так
obj[name]="это имя";

//для того чтобы сделать это через точку мы должны явно указать имя а не из переменной его взять

var obj={};

obj.Andrey="это имя";

Where can it be useful? This can come in handy when you submit a form to an AJAX server.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question