js 处理数组的几种方式

处理数组的几种方式
1、reduce
reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。
语法:

 arr.reduce(callback,[initialValue])

reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,
callback(执行数组中每个值的函数,包含四个参数)

1、previousValue(上一次调用回调返回的值,或者是提供的初始值)
2.、currentValue (数组中当前被处理的元素)
3、index(当前元素在数组中的索引)
4、array (调用reduce的数组)

 initialValue (作为第一次调用callback的第一个参数)\

实例:

var  arr = [1, 2, 3, 4];
var sum = arr.reduce(function(prev, cur, index, arr) {
    console.log(prev, cur, index);
    return prev + cur;
},0) //注意这里设置了初始值
console.log(arr, sum);

其中,给了初始值0,则调用时代码循环执行了四次

用法:
1)计算数组中每个元素出现的次数

let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
let nameNum=names.reduce((pre,cur)=>{
	if(cur in pre){
		pre[cur]++
	}else{
		pre[cur]=1
	}
	return pre
},{})
console.log(nameNum)

2、数组循环(有返回 重组数组使用map,filter;无返回直接使用forEach)

  1. forEach,for循环:直接用于对数组的处理 无返回值时使用
  2. map 、filter 对现有数组进行重组返回一个新数组;
    map 是否满足条件都会返回
    filter 返回满足条件的某些数据项;

3、some 判断数组中某一项是否满足要求 返回true/false;

let attr2=[{name:'1',age:22},{name:'2',age:33}]
const isHasName1=attr2.some(item=>item.name==='1');
console.log(isHasName1)

4、find 返回满足条件的某一项,满足条件即直接跳出循环;没有任何一项满足返回undefined

let attr2=[{name:'1',age:22},{name:'2',age:33}]
const isHasName1=attr2.find(item=>item.name=='1')
console.log(isHasName1)
const isHasName5=attr2.find(item=>item.name=='5')
console.log(isHasName5)

5、push unshift 数组添加某一项;改变原数组值
6、pop shift 数组移除某一项; 改变原数组值
7、slice 截取数组;返回截取的结果 不改变原数组值
8、splice 截取/替换莫数组值 ,返回要处理的数据结果 改变原数组值

let attr3=[1,2,45]
attr3.push(66);
console.log(attr3); // [1, 2, 45, 66]
attr3.unshift(0);
console.log(attr3); // [0,1, 2, 45, 66]
attr3.pop()
console.log(attr3); // [0, 1, 2, 45]
attr.shift()
console.log(attr3); // [1, 2, 45]
let sliceAttr=attr3.slice(0,1);
console.log(sliceAttr) // [1]
console.log(attr3); // [1, 2, 45]
const spliceAttr=attr3.splice(1,1,'test');
console.log(spliceAttr) // [2]
console.log(attr3); //[1, 'test', 45]
const apliceAttr2=attr3.splice(1,2,...['change333','change4444'])
console.log(apliceAttr2) // [ 'test', 45]
console.log(attr3); //[1,'change333','change4444']
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值