js中常用的Array数组方法

js中常用的Array方法

forEach(ES5中Array使用最频繁

遍历,循环输出,它接受一个必须的回调函数作为参数。
但是forEach不会遍历空元素

例子:

var array= [1,2,3,4]
array.forEach((item)=>{
    console.info(item);
})
//1
//2
//3
//4

相比for循环,forEach简洁了很多,forEach方法中的回调函数支持3个参数。
value:是遍历的数组内容;index:是对应的数组索引,array:是数组本身。
array.forEach((value, index, array)=> {});

forEach除了接受一个回调函数作为参数,还接受一个可选的上下文参数(改变回调函数里面的this指向)。array.forEach(callback,[thisObject])

map (ES5中Array使用最基本)

遍历,不同是的最终输出一个新的数组

callback的参数跟forEach一样。
array.map(callback,[thisObject]);

array.map(function(value, index, array) {
//callback需要有return值
});
map函数是把原数组被“映射”成一个新数组
let array1 = [1, 2, 3, 4]
let array2 = array1.map( (item, index, array) => {
   return item * item
});

console.info(array2); // [1,4,9,16]

filter过滤、筛选
filter的callback函数需要返回布尔值true或false(返回值只要是弱等于== true/false就可以了),callback需要有return值。
array.filter(callback,[thisObject]);

例子:

const array4 = [0, false, 2, 3];
const array5 = array4.filter(function(item) {
    return item;
});
console.info(array5); // [2, 3],数组中array4的前2个组返回0和false则被过滤掉

some
some意指“某些”,指是否“某些项”合乎条件。用法如下:

array.some(callback,[thisObject]);

some要求至少有1个值让callback返回true就可以了,如下例子:

const arrFraction = [60, 80, 95, 70];
const passFraction = 90;//有一个人高于90分就通过入学考试

const result = arrFraction.some((item)=>{
             return item > passFraction
         })
       if(result){
             console.info("通过入学考试");
          }

every
every意指“每一项”,指所有必须合乎条件,只要一项不符合则返回false。用法如下:

const arrFraction = [91, 93, 95, 89];
const passFraction = 90;//所有人高于90分就通过入学考试

const result = arrFraction.every((item)=>{
    return item > passFraction
})
if(result){
    console.info("通过入学考试");
}else{
    console.info("不通过入学考试");
}

reduce (常用来求数组项之和,数组中的最小值)

reduce意指“缩减”,它接收一个函数作为累加器,对数组中的每个值从左到右遍历进行操作,最终计算为一个值。用法如下:

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
//total 必需。初始值, 或者计算结束后的返回值
//currentValue 必需。当前元素
//currentIndex 可选。当前元素的索引
//arr 可选。当前元素所属的数组对象。
//initialValue 可选。传递给函数的初始值,也就是total的初始值

2022.10.12新增:JS 对数组对象进行排序
1.对Number类型的数组排序是很简单的

var arr = [123,203,23,13,34,65,65,45,89,13,1];
function func(a,b){
	return a-b;
}
console.log(arr.sort(func)); //(11) [1, 13, 13, 23, 34, 45, 65, 65, 89, 123, 203]

2.对数组元素为对象的数组进行排序也很简单,可以写一个下面的公共方法

compare(attr, rev) {/** 两个参数: 参数1 是排序用的字段, 参数2 是:是否升序排序 true 为升序,false为降序*/
	console.log(attr, rev);
	if (rev == undefined) {
		rev = 1;
	} else {
		rev = rev ? 1 : -1;
	}
	return (a, b) => {
		a = a[attr];
		b = b[attr];
		if (a < b) {
			return rev * -1;
		}
		if (a > b) {
			return rev * 1;
		}
		return 0;
	};
},

页面中使用:

	const lt = [{ value: 88, label: '北京' }, 
			{ value: 100, label: '全网' },
			{ value: 23, label: '西安' }, 
			{ value: 60, label: '武汉' }, 
			{ value: 36, label: '丰台' }];
	this.list = lt.sort(this.compare('value', false));
	console.log(this.list);
//结果:[{"value":100,"label":"全网"},{"value":88,"label":"北京"},{"value":60,"label":"武汉"},{"value":36,"label":"丰台"},{"value":23,"label":"西安"}] 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值