JS遍历数组和对象
JS数组遍历
1、普通for循环:
let arr = [1, 2, 3];
for (let i = 0, len = arr.length; i < len; i++) {
console.log(arr[i]);
}
2、forEach循环:
let arr = [1, 2, 3];
arr.forEach(item => {
console.log(item);
})
forEach循环不能通过break跳出,也不同使用return语句返回到外层。
3、for...of循环:
let arr = [1, 2, 3];
for (let item of arr) {
console.log(item);
}
- for...of循环内可以使用break、continue和return语句;
- 不仅可以用来遍历数组,还可以用来遍历对象。
JS对象遍历
后面所有遍历都依据下面的对象
let obj = {
name: 'nike',
sex: 'male',
[Symbol.for('foo')]: 'foo'
};
Object.defineProperty(obj, 'age', {
value: 20,
enumerable: false
});
1、for...in循环:
for(let item in arr) {
console.log(item); // 'nike' ,'male'
}
for...in循环遍历对象中的可枚举属性,不包括Symbol属性。
2、Object.keys()和Object.values()
let keys = Object.keys(obj); // [name, sex]
let values = Object.values(obj); // ['nike', 'male']
Object.keys()和Object.values()分别会获取对象中键名和键值,然后放进数组中返回,只会返回可枚举属性,不包括Symbol属性。
3、Object.getOwnPropertyNames()
const arr = Object.getOwnProprtyNames(obj); // [name, sex, age]
返回对象中除Symbol属性以外的属性名,包括不可枚举属性。
4、Object.getOwnPropertySymbols()
const arr = Object.getOwnPropertySymbols(obj); // [Symbol(foo)]
返回对象中所有的Symbol属性。
5、Reflect.ownKeys()
const arr = Reflect.ownKeys(obj); // [name, sex, Symbol(foo), age]
返回对象中所有属性。

浙公网安备 33010602011771号