JavaScript的遍历方法(常用)

js中有哪些循环遍历的方法嘞
1.forEach 方法用于调用数组的每个元素,并将元素传递给回调函数。数组中的每个值都会调用回调函数。其语法如下:

const arr=['a','b','c'];
arr.forEach(function(value,index,arr){
				value=value+1;
				console.log(value);//a1,b1,c1
				console.log(index);//0,1,2
				console.log(arr);//['a','b','c']
				return value;//undefined
				});

注意:
forEach没有返回值,不会修改原数组

map()

2.map()方法 方法会返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。该方法按照原始数组元素顺序依次处理元素
正常使用
map(function(数组的值,数组的下标,原数组){});
this使用
map(function(数组的值,数组的下标,原数组){},this的指向);
嵌套使用
由前到后的一级级执行map函数并且返回到新数组

const arr=['a','b','c'];
	//正常循环使用
	arr.map(function(value,index,arr){
				value=value+1;
				console.log(value);//a1,b1,c1
				console.log(index);//0,1,2
				console.log(arr);//['a','b','c']
				return value;//['a1','b1','c1']
				});
	//this使用
	var a=[1,2].map(function(e){
			 	return this[e];
		 	},arr);//返回[b,c]
			let arr1 = [1, 2, 3];
	// 嵌套使用
	var b=arr.map(item => item + 1).map(item => item + 2);//返回['a12','b12','c12']

注意:

  • map 方法不会对空数组进行检测;
  • map 方法遍历数组时会返回一个新数组,不会改变原始数组;
  • map方法有返回值,可以return出来,map的回调函数中支持return返回值;

filter()

filter()方法用于过滤数组,满足条件的元素会被返回。它的参数是一个回调函数,所有数组元素依次执行该函数,返回结果为true的元素会被返回,如果没有符合条件的元素,则返回空数组。其语法如下

设置条件 筛选数组,创建新数组
const arr = [1, 2, 3, 4, 5]
arr.filter(item => item > 2) 
// 输出结果:[3, 4, 5]
过滤数组		移除数组中的undefinednullNAN等值:
let arr = [1, undefined, 2, null, 3, false, '', 4, 0]
arr.filter(Boolean)
// 输出结果:[1, 2, 3, 4]

循环对象

for…in 主要用于循环对象属性。循环中的代码每执行一次,就会对对象的属性进行一次操作。其语法如下:

var obj = {a: 1, b: 2, c: 3}; 
 
for (var i in obj) { 
    console.log('键名:', i); 
    console.log('键值:', obj[i]); 
}

Object.keys()、Object.values() Object.entries()
用于循环对象,返回的属性值组合创建一个新数组,(但是不含Symbol属性),

Object.keys():返回包含对象键名的数组;
Object.values():返回包含对象键值的数组;
Object.entries():返回包含对象键名和键值的二维数组。

let obj = { 
  id: 1, 
  name: 'hello', 
  age: 18 
};
console.log(Object.keys(obj));   // 输出结果: ['id', 'name', 'age']
console.log(Object.values(obj)); // 输出结果: [1, 'hello', 18]
console.log(Object.entries(obj));   // 输出结果: [['id', 1], ['name', 'hello'],['age', 18]];

Object.getOwnPropertyNames()
Object.getOwnPropertyNames()方法可循环出symbol类型和基础类型,返回一个数组,包含了该对象自身的所有属性名。但它能返回不可枚举的属性。

var sy=sybol("kk");
let a = {
	name:"yy",
	age:11,
	sy:11
};

Object.getOwnPropertyNames(a) // ["0", "1","sybol("kk")",length"]

Object.getOwnPropertySymbols()
Object.getOwnPropertySymbols() 方法返回对象自身的 Symbol 属性组成的数组,不包括字符串属性:

let obj = {a: 1}
//通过静态方法添加不可被循环的symbol属性
Object.defineProperties(obj, {
 [Symbol('yy')]: {
  value: 'Symbol yy',
  enumerable: false
 }
}) 
// 给对象添加一个Symbol 属性
obj[Symbol('kk')] = 'Symbol kk' 
Object.getOwnPropertySymbols(obj).forEach((key) => {
 console.log(obj[key]) 
})
// 输出结果:Symbol ('yy') Symbol ('kk')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明日筑梦师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值