js遍历数组和对象的方法
数组
1.for循环
var arr=[1,2,3,4,5,6]
for(var i=0;i<arr.length;i++){ //arr.length是数组的长度
console.log("arr="+arr[i]);
}
2.forEach
- forEach()方法需要一个函数作为参数
- 该方法没有返回值
- 浏览器会在回调函数中传递三个参数,他们的作用分别为:
第一个参数:就是当前正在遍历的对象
第二个参数:就是当前正在遍历的对象的索引
第三个参数:就是当前正在遍历的数组
var arr=[1,2,3,4,5,6];
arr.forEach(function (value,index,array){
console.log("第一个参数="+value);
// console.log("第二个参数="+index);
// console.log("第三个参数="+array);
})
3.map
- map函数,遍历数组每个元素,并回调操作,需要返回值,返回值组成新的数组,原数组不变
var arr = ['a', 'b', 'c', 'd'];
arr.map(function(item, index, array) {
console.log(item, index);
})
4.filter()函数
- 返回一个新数组,数组的元素是原数组中通过测试的元素(就是回调函数返回 true 的话,对应的元素会进入新数组), 原数组不变。
var arr=[1,"男",true,66];
var result=arr.filter(function (value){
return typeof value === 'number'; //我们判断数据类型是否为Number,是则将其值返回
})
console.log (arr,result);
5.some()函数
- 遍历数组中是否有符合条件的元素,返回值为Boolean值
这个它只要找到一个符合条件的,就返回 true。
var arr=[1,"男",true,66];
var result=arr.some(function (value){
return typeof value === 'number';
})
console.log (arr);
console.log (result);
var arr2=[1,null,true,66];
var result2=arr2.some(function (value){
return typeof value === 'String';
})
console.log (arr2);
console.log (result2);
6.every()函数
- 测试数组的各个元素是否通过了回调函数的测试
- 若都通过,返回 true,否则返回 false
- 简单的说就是如果回调函数每次返回的值都是 true 的话,则 every() 返回 true,否则为 false。
var arr=[1,2,8,66];
var result=arr.every(function (value){
return typeof value === 'number';
})
console.log (arr);
console.log (result);
var arr2=[1,"男",true,66];
var result2=arr2.every(function (value){
return typeof value === 'number';
})
console.log (arr2);
console.log (result2);
7.find()函数
- 返回第一个通过测试的元素
- 如果没有通过测试的元素,则会返回undefined。
var arr=[1,2,8,66,"女","男"];
var result=arr.find(function (value){
return typeof value === 'string';
})
console.log (arr);
console.log (result);
var arr2=[1,"男",true,66,false];
var result2=arr2.find(function (value){
return typeof value === 'boolean';
})
console.log (arr2);
console.log (result2);
8.findIndex()函数
- 这个函数与上面的find()作用一样,就是它返回的值为该通过第一个元素的索引。
var arr=[1,2,8,66,"女","男"];
var result=arr.findIndex(function (value){
return typeof value === 'string';
})
console.log (arr);
console.log (result);
var arr2=[1,"男",true,66,false];
var result2=arr2.findIndex(function (value){
return typeof value === 'boolean';
})
console.log (arr2);
console.log (result2);
对象
1.for…in
- 会遍历出对象的下标(也就是key值)
for(let i in obj){
console.log(i,obj[i]);
}
2.Object.keys(obj)
- 遍历返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).
Object.keys(obj).forEach(function(key){
console.log(key,obj[key]);
})
3.Object.getOwnPropertyNames(obj)
- 遍历返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性).
Object.getOwnPropertyNames(obj).forEach( key => {
console.log(key,obj[key]);
})