Sobes.tech
Junior

რა არის for...in და for...of ციკლების შორის განსხვავება?

sobes.tech AI

პასუხი AI-სგან

for...in ციკლი გადის ობიექტის იტერაბელ თვისებების (საიდენტიფიკატორების) მახასიათებლებს, მათ შორის მისი პროტოტიპის ჯაჭვში არსებულ თვისებებს.

for...of ციკლი გადის იტერაბელ ობიექტების (Array, Map, Set, String, arguments და ა.შ.) მნიშვნელობებს. იგი არ გადის პროტოტიპის თვისებებს.

for...in for...of
გადის ობიექტის გასაღებს (საიდენტიფიკატორებს) იტერაბელ ობიექტების მნიშვნელობებს
გამოყენება ობიექტებთან Array, String, Map, Set და სხვა იტერაბელ ობიექტებთან
პროტოტიპი გადის პროტოტიპის თვისებებს არ გადის პროტოტიპის თვისებებს
სორტი გარანტირებული არა, განსაკუთრებით არინტეგერ გასაღებებზე გარანტირებული Array-ებზე (ინდექსით)

for...in მაგალითი:

const obj = { a: 1, b: 2 };
for (const key in obj) {
  console.log(key, obj[key]); // გამოიტანს: "a 1", "b 2"
}

for...of მაგალითი:

const arr = [1, 2, 3];
for (const value of arr) {
  console.log(value); // გამოიტანს: 1, 2, 3
}

საერთო ჯამში, მასივებისა და მსგავსი სტრუქტურების გადასასვლელად უკეთესია გამოიყენოთ for...of, ხოლო ობიექტის თვისებების გადასასვლელად — for...in (ხშირად hasOwnProperty-თან ერთად, პროტოტიპის თვისებების გამორიცხვისთვის).