对象遍历
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
}
const arr = [10, 20, 30];
for (const value of arr) {
console.log(value);// 10 20 30
}
for of
可以随时退出循环,还可以遍历string
。
需要使用index 标的话需要这样使用:
//itemRefs 是ref,proxy array
//需要使用entries解决
for (let [index, iterator] of itemRefs.value.entries()) {
console.log('AAAAA', index)
formData[applyItems[index].labelProp] = iterator.submit()
}
-
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
});
const arr = [10, 20, 30];
const sumArr=arr.map((value) => {
return value+10;
});
console.log(sumArr);//[20, 30, 40]
const arr = [10, 20, 30];
const sum = arr.reduce((total, value) => {
return total + value;
});
console.log(sum); // 60
const arr = [10, 20, 30];
const filterArr =arr.filter((value, index, array) => {
return (value % 2) == 0;
});