js常用的遍历方法
对象
- for i in obj 此处i为属性名,适合遍历对象, 他的i为键名, 遍历数组的话i为字符串,但是数组的索引为数字。他遍历对象也可以遍历到手动添加的属性,甚至可以遍历到原型上的属性
const obj = {
id: 1,
name: 'qiao',
age: 18
};
for (let i in obj) {
console.log(i + ' ' + obj[i]);
}
// id: 1
// name: qiao,
// age: 18
- Object.keys() 属性名, Object.values() 属性值
const obj = {
id: 1,
name: 'qiao',
age: 18
};
//只可遍历可枚举属性
console.log(Object.keys(obj)); // ['id', 'name', 'age']
console.log(Object.values(obj)); // [1, 'qiao', 18]
// 这个方法可以遍历出所有的属性名
Object.getOwnPropertyNames(obj)
数组
- 最传统的for循环, 比较适用于可以确认次数的遍历
const arr = [1,2,3,7,9,5,6];
for (let i = 0; i < arr.length; i++) {
console.log(i + ':' + arr[i]);
}
- for i of 此处i为value值,避免了for in的缺点 可以使用conyinue和break及return,支持数组以及类数组,但是不适用于遍历对象
const arr = [1,2,3,7,9,5,6];
for (let i of arr) {
console.log(i);
}
迭代
- forEach() 注意forEach没有返回值,不用关心下标,但是不能同时遍历多个集合,而且在遍历的时候无法更改数组,也无法使用continue break 和return, 还有对于空数组不会执行回调
// 接受3个参数 第一个为value值,第二个为下标,第三个为数组本身
const arr = [1,2,3,7,9,5,6];
let a = arr.forEach((item,index) => {
return item * 2;
});
console.log(a); // Undefined
- map() 返回的是经过循环体后重建的新数组
const arr = [1,2,3,7,9,5,6];
let a = arr.map((item,index) => {
return item * 2;
});
console.log(a); // [2, 4, 6, 14, 18, 10, 12]
- filter() 筛选 返回的是符合条件的值组成的新数组
const arr = [1,2,3,7,9,5,6];
let a = arr.filter((item,index) => {
return item > 2;
});
console.log(a); // [3, 7, 9, 5, 6]
- some() 只要有一个符合条件就返回true
const arr = [1,2,3,7,9,5,6];
let a = arr.some((item,index) => {
return item > 2;
});
console.log(a); // true
- every() 只有全部符合条件才返回true
const arr = [1,2,3,7,9,5,6];
let a = arr.every((item,index) => {
return item > 2;
});
console.log(a); // false
版权声明:本文为qq_50983290原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。