javascript 数组、对象遍历
1.数组遍历
1.forEach()
循环数组,不会改变元素,不会返回新数组
arr.foreach((value,index)=>{})
2. map()
遍历数组,对每个元素进行处理,之后返回元素;会返回一个新数组。
var arr = arr.map((value,index)=>{value++ return value})
3.some()
遍历数组,在回调函数里进行条件的判断,返回 true 或 false 。当有一个元素满足条件时就停止遍历并返回true;当全部的元素都不满足要求时,返回false
var bool = arr.some((value,index)=>{return value>3})
4.every()
遍历数组,同上。当有一个元素不满足条件时就停止遍历并返回false;当全部元素都满足时,返回true
var bool = arr.every((value,index)=>{return value>3})
5. filter()
遍历数组,在回调函数里进行条件判断,当结果为true时,将该元素返回,组成一个新数组。
var arr2 = arr.filter((value,index)=>{return value>3})
var arr2 = arr.filter((value,index)=>{ if(value>3){return true} })
6. reduce() //reudce:浓缩
reduce(callback,init) init为初始值。
当init为空时,回调函数第一次执行的res是数组的第一个元素,value是第二个;第二次执行的时候res是第一次执行返回的内容,value是第三个元素;之后同第二次
当init不为空时,回调函数第一次执行的res是init,value是第一个元素;当第二次执行时res是第一次执行返回的内容,value是第二个元素;第三次的value是第三个元素
var result = arr.reduce((res,value)=>{res = res+value return res})
var result = arr.reduce((res,value)->{res = res+value return res},100)
7.使用for-of遍历
不仅支持数组,还支持大多数类数组对象,例如DOM NodeList对象.
也支持字符串遍历,它将字符串视为一系列的Unicode字符来进行遍历.
var
arr=[
"张三"
,
"李四"
,
"王五"
,
"赵六"
];
for
(
var
value of arr){
console.log(value);
}
var
arr=[
"张三"
,
"李四"
,
"王五"
,
"赵六"
];
for
(
var
i
in
arr){
console.log(i,
":"
,arr[i]);
}
返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).var
obj = {
'0'
:
'a'
,
'1'
:
'b'
,
'2'
:
'c'
};
Object.keys(obj).forEach(
function
(key){
console.log(key,obj[key]);
});
循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).
var
obj = {
'0'
:
'a'
,
'1'
:
'b'
,
'2'
:
'c'
};
for
(
var
i
in
obj) {
console.log(i,
":"
,obj[i]);
}
返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)var
obj = {
'0'
:
'a'
,
'1'
:
'b'
,
'2'
:
'c'
};
Object.getOwnPropertyNames(obj).forEach(
function
(key){
console.log(key,obj[key]);
});
返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举.var
obj = {
'0'
:
'a'
,
'1'
:
'b'
,
'2'
:
'c'
};
Reflect.ownKeys(obj).forEach(
function
(key){
console.log(key,obj[key]);
});