对象遍历
1.for...in:对象自身(包含继承)的所有可枚举属性(不含 Symbol 属性)
const obj = {a:1, b:2, c:3};
for (const prop in obj) {
console.log("obj." + prop + " = " + obj[prop]);
}
- Object.keys:对象自身(不含继承)的所有可枚举属性(不含
Symbol
属性)
const obj = {a:1, b:2, c:3};
Object.keys(obj).map((key) => {
console.log("obj." + key + " = " + obj[key]);
})
相应的,获取对象值的方法是:Object.values。
- Object.entries:对象自身(不含继承)的所有可枚举属性(不含
Symbol
属性)的键值对数组
const obj = {a:1, b:2, c:3};
//Object.entries(obj)的值:[ ['a', 1], ['b', 2] ],, ['c',3] ]
Object.entries(obj).map(([key,value]) => {
console.log("obj." + key + " = " +value);
})
键值顺序和for in
返回的顺序一致。
- Object.getOwnPropertyNames:含对象自身的所有属性(包括不可枚举属性、继承属性,不含
Symbol
属性)
const obj = {a:1, b:2, c:3};
Object.getOwnPropertyNames(obj).forEach(function(key){
console.log(key,obj[key]);
});
- Reflect.ownKeys:包含对象自身的所有属性,包含继承属性、
Symbol
属性和不可枚举属性
const obj = {a:1, b:2, c:3};
Reflect.ownKeys(obj).forEach(function(key){
console.log(key,obj[key]);
});
数组遍历
1.for
const arr = [10, 20, 30];
for (const i = 0; i < arr.length; i++) {
console.log(arr[i]);// 10 20 30
}
- for...of
const arr = [10, 20, 30];
for (const value of arr) {
console.log(value);// 10 20 30
}
for of
可以随时退出循环,还可以遍历string
。
- for...in(不建议,
i
是数组下标)
const arr = [10, 20, 30];
for (const i in arr) {
console.log(i);// 0 1 2
}
4.forEach
const arr = [10, 20, 30];
arr.forEach((value) => {
console.log(value);// 10 20 30
});
- map
const arr = [10, 20, 30];
const sumArr=arr.map((value) => {
return value+10;
});
console.log(sumArr);//[20, 30, 40]
- reduce
const arr = [10, 20, 30];
const sum = arr.reduce((total, value) => {
return total + value;
});
console.log(sum); // 60
- filter
const arr = [10, 20, 30];
const filterArr =arr.filter((value, index, array) => {
return (value % 2) == 0;
});