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]

返回对象中所有属性。

posted @ 2020-07-09 17:30  木剑温小二  阅读(89)  评论(0)    收藏  举报