📅  最后修改于: 2023-12-03 15:39:33.588000             🧑  作者: Mango
在Javascript中,循环对象是一种用于遍历可枚举属性的方法,它可以用来遍历数组、对象、字符串、Map等集合类型中的元素。下面我们来介绍几种常用的循环对象方式。
for...in循环可以遍历一个对象的所有可枚举属性,包括自身属性和继承属性。语法如下:
for (var key in obj) {
// key为属性名,obj[key]为属性值
console.log(key + ': ' + obj[key]);
}
需要注意的是,for...in循环的遍历顺序是不固定的,且会遍历到继承属性,因此需要使用Object的hasOwnProperty()方法判断一下是否是自身属性。此外,for...in循环遍历的是key而不是value,需要通过key取value。示例代码如下:
var obj = {a: 1, b: 2, c: 3};
Object.prototype.d = 4; // 给Object原型添加一个属性
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(key + ': ' + obj[key]);
}
}
// 输出:a: 1, b: 2, c: 3
for...of循环可以遍历具有迭代器的集合对象,如数组、字符串、Map等。语法如下:
for (var value of iterable) {
console.log(value);
}
for...of循环中的value即为集合中的元素值。与for...in循环不同,for...of循环遍历的是value而非key。示例代码如下:
var arr = [4, 5, 6];
for (var value of arr) {
console.log(value);
}
// 输出:4, 5, 6
forEach循环是Array原型上的方法,它可以遍历数组中的每一个元素,并为每一个元素执行指定的函数操作。语法如下:
array.forEach(function (value, index, array) {
// value为当前元素值,index为当前元素下标,array为原数组
console.log(value, index);
});
需要注意的是,forEach循环不能中断,如果需要中断循环可以使用some或every方法代替。示例代码如下:
var arr = [1, 2, 3, 4, 5];
arr.some(function (value, index) {
console.log(value);
if (index === 2) {
return true; // 结束循环
}
});
// 输出:1, 2, 3
以上三种方式是Javascript中常用的循环对象的方式,可以根据不同场景选择不同的方式以达到最佳效果。