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-თან ერთად, პროტოტიპის თვისებების გამორიცხვისთვის).