В процессе разработки мы часто просматриваем массивы или объекты, обычно используемые методы, такие как for, foreach, for in, for of, поэтому сегодня мы обсудим использование этих методов; 1.
цикл
for : цикл for часто используется в массиве , использование также очень простое
for(let i=0,len=array.length;i<len;++i){
console.log(array[i])
}
Таким образом, можно обойти каждый элемент в массиве, а цикл
можно закончить с помощью break или return; почему он не может пройти по объекту? Очевидно, что у объекта нет свойства length.
2. Цикл Foreach:
array.foreach((item,index)=>{
console.log(item,index)
)}
Метод записи более лаконичен, чем for, но самая большая разница между ним и for заключается в том, что он не может использовать break или return для выхода из цикла; если вы должны выйти из цикла, вы должны использовать try ... catch ...
try{
array.foreach((item,index)=>{
if(some===item){
throw error
}
)}
}catch(error){
}
3. for in обычно используется для перемещения объектов
const obj={
a:1,b:2}
for(let key in obj){
console.log(key ,obj[key]) //a ,1 b ,2
}
Конечно, помимо просмотра свойств самого объекта, вы также можете просмотреть свойства прототипа объекта, например:
const obj={
a:1,b:2}
obj.prototype.c=3;
for(let key in obj){
console.log(key ,obj[key]) //a,1 b,2 c,3
}
Но что, если мы воспользуемся этим для обхода массива?
const array=[1,2,3,4]
for(let key in array){
console.log(key ,array[key]) //0,1 1,2 2,3 3,4
}
Массивы также являются объектами по своей природе, поэтому массивы также имеют прототипы. Предположим, мы также добавляем атрибуты к прототипу массива, например:
const array=[1,2,3,4];
array.prototype.addPrototype=5;
for(let key in array){
console.log(key ,array[key]) //0,1 1,2 2,3 3,4 addPrototype,5
}
4. For of Когда метод или атрибут прототипа добавляется к массиву, мы не хотим перемещаться по методу на прототипе, тогда ES6 предоставляет такой метод, в основном, чтобы восполнить недостатки for in;
const array=[1,2,3,4];
array.prototype.addPrototype=5;
for(let key of array){
console.log(key ,array[key]) //0,1 1,2 2,3 3,4
}
Но for of не может использоваться для прямого обхода объектов, иначе он сообщит, что obj не является итерируемым. Если мы хотим использовать это для обхода объектов, мы должны использовать метод Object.keys ()
const obj={
a:1,b:2}
for(let key of Object.keys(obj)){
console.log(key)
}
Резюме:
1. Самая мощная функция - for in, которая может перемещаться по массивам и объектам;
2. За исключением того, что foreach не может использовать break или return для выхода из цикла, все остальное в
порядке ; 3. for in обычно используется для обхода Объекты, остальные - массивы обхода