对象遍历
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
。
需要使用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
});
-
[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;
});