При обходе массива или объекта мы часто используем два метода:for in
а такжеfor of
, так в чем разница между этими двумя методами? давайте проведем исследование
Проще говоря, оба они могут использоваться для обхода, ноfor in
Перебирает индексы массива (index
),а такжеfor of
Перебирает значения элементов массива (value
)
// for in
var obj = {a:1, b:2, c:3}
for (let key in obj) {
console.log(key)
}
// a b c
//for of
const array1 = ['a', 'b', 'c']
for (const val of array1) {
console.log(val)
}
// a b c
Поговорим о в
for in
Он больше подходит для обхода объектов, он, конечно, тоже может обход массивов, но тут будут некоторые проблемы,
Например:
index
Индекс представляет собой число строкового типа, которое нельзя использовать непосредственно для геометрических операций.
var arr = [1,2,3]
for (let index in arr) {
let res = index + 1
console.log(res)
}
//01 11 21
Возможно, порядок обхода не соответствует внутреннему порядку фактического массива.
использоватьfor in
Он будет проходить по всем перечислимым свойствам массива, включая прототипы.Если вы не хотите проходить по методам и свойствам прототипа, вы можете судить внутри цикла и использоватьhasOwnProperty()
Метод может определить, является ли свойство экземплярным свойством объекта.
var arr = [1,2,3]
Array.prototype.a = 123
for (let index in arr) {
let res = arr[index]
console.log(res)
}
//1 2 3 123
for(let index in arr) {
if(arr.hasOwnProperty(index)){
let res = arr[index]
console.log(res)
}
}
// 1 2 3
Давайте поговорим о for of в ES6
for of
Перебирает значения элементов массива иfor of
Перебирает только элементы массива, исключая свойства и индексы прототипа.
var arr = [1,2,3]
arr.a = 123
Array.prototype.a = 123
for (let value of arr) {
console.log(value)
}
//1 2 3
for of
Номер применяет ход/объект массива/строку/map
/set
etc имеют объекты итератора (iterator
), но вы не можете пройти по объекту, потому что нет объекта итератора, но если вы хотите пройти по свойствам объекта, вы можете использоватьfor in
loop (вот что он делает) или используйте встроенныйObject.keys()
метод
var myObject={
a:1,
b:2,
c:3
}
for (var key of Object.keys(myObject)) {
console.log(key + ": " + myObject[key]);
}
//a:1 b:2 c:3
резюме
for in
Обход — это индекс массива (т. е. имя ключа), аfor of
Перебирает значения элементов массива
for in
всегда получать объектkey
или индекс массива или строки
for of
всегда получать объектvalue
или массив, строковое значение
4. Вывод
Если вы считаете, что эта статья полезна для вас, вы можете протянуть руку и поставить лайк этой статье.
Я новичок на переднем крае. С отношением к обучению и менталитетом познания друг друга я делюсь своими знаниями. В дополнение к закреплению своих знаний о знаниях я также надеюсь, что каждый сможет написать через меня. Я узнал немного знаний из статьи.Если содержание знаний неверно, вы можете сообщить мне об этом в области комментариев или публичном аккаунте ниже, и я немедленно изменю его.
Наконец, я также создал публичный аккаунт [Front-end Harvester], я надеюсь, вы можете обратить внимание на волну, статьи в нем все работают против выпадения волос.