Почему мы не можем использовать обычный цикл for для печати объекта javascript?

Я изучаю JavaScript, поэтому сегодня я узнал, что для печати или получения свойств объекта используется цикл for..in. но я запутался здесь, потому что я раньше не видел цикла for..in. поэтому я столкнулся с вопросом, почему мы не можем использовать цикл for в JavaScript для печати свойства объекта? и как этот цикл for..in работает? вот пример.

let object1 = {
name : 'someone',
name2 : 'someone2',
phno : 234568969
};

и напечатать это все предлагают

for(let key in object1)
{
console.log(key + "=" + object1[key]);
}

и мой вопрос в том, как работает этот цикл и почему этот цикл для печати свойств.


person GeekyNerd    schedule 15.07.2020    source источник
comment
Цикл for-in проходит по всем перечислимые свойства объекта, и если проверка на hasOwnProperty отсутствует, то он также будет перебирать свойства родительского объекта.   -  person Kunal Mukherjee    schedule 15.07.2020


Ответы (2)


В отличие от for... of, цикл for... in будет перебирать перечисляемые свойства (не их значения) объекта.

В приведенном выше примере вы перебираете ключи объекта (метки свойств), а затем используете их для доступа к значениям на object1.

Пример ниже более четко демонстрирует, как работает цикл for... in.

const arr = [23, 45, 67, 56];

for(let index in arr) {
  // Note that only the indexes of the array are 
  // assigned to 'index', not the values
  console.log('Index:', index);
  
  // To access the values, you should do:
  console.log('Value:', arr[index])
}

То же самое и с объектами:

const obj = {
  prop1: 'val 1',
  prop2: 2,
  prop3: { nestedObjProp: 'Nested Object Value' }
}

for(let key in obj) {
  console.log('Key:', key, '  Value:', obj[key]);
}

Обратитесь к для ... в в веб-документации MDN, чтобы узнать больше о for... in циклах.

person sandmann    schedule 15.07.2020

Почему мы не можем использовать цикл for (Normal) в JavaScript для печати свойства объекта?
Ответ. Потому что объект - это пара "ключ-значение", а не массив.

Как работает этот цикл for..in?
Ответ. Перебирает свойства объекта. (который можно использовать для получения значения, например, object [property]).

Примечание: Имущество означает ключ.

если вы хотите перебрать массив, вы можете использовать простой цикл for, как показано ниже.

var x = [1, 2, 3];

var i;
for (i = 0; i < x.length; i++) {
  console.log(x[i]);
}
person Avadh Vashisth    schedule 15.07.2020