数组的常用方法

reduce

arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
arr.reduce((pre, item)=>{
 // pre 上一次的值
 // item 当前项目
 return xx // 这个返回值作为下一次的上一次的值
}, 0)

1.第一个参数: callback函数

执行数组中每个值 (如果没有提供 initialValue则第一个值除外)的函数,包含四个参数:

  • accumulator

​ 累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue(见于下方)。

  • currentValue

数组中正在处理的元素

  • index 可选

​ 数组中正在处理的当前元素的索引。 如果提供了initialValue,则起始索引号为0,否则从索引1起始。

  • array可选

​ 调用reduce()的原数组

2. 第二个参数: initialValue可选

作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。

如果调用reduce()时提供了initialValueaccumulator取值为initialValuecurrentValue取数组中的第一个值;如果没有提供 initialValue,那么accumulator取数组中的第一个值,currentValue取数组中的第二个值。
3.用法用途

  • 求和
//total 6
var total = [ 0, 1, 2, 3 ].reduce(
  ( acc, cur ) => acc + cur,
  0
);
  • 累加对象里面的值
//sum  6
let sum = [{x: 1}, {x:2}, {x:3}].reduce(
    (accumulator, currentValue) => accumulator + currentValue.x
    ,0
);
  • 二维数组变一维
//[0,1,2,3,4,5]
var newArr = [[0, 1], [2, 3], [4, 5]].reduce(
 ( acc, cur ) => acc.concat(cur),[]
);
  • 计算数组中每个元素出现的次数
// countedNames is:{ 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }
const names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
let countedNames = names.reduce(function (allNames, name) { 
  if (name in allNames) {
    allNames[name]++;
  }
  else {
    allNames[name] = 1;
  }
  return allNames;
}, {});

filter

过滤=>不会对空数组进行检测,不会改变原始数组,返回的是一个新数组

delChecked() {
        //利用过滤原则,让list数组中的值为checked未选中的
        this.list = this.list.filter((item) => !item.checked);
      },

forEach

循环数组,不做任何改变

// item 表示当前项目
// index 表示索引
arr.forEach((item, index)=>{
    
})

map

循环数组,生成一个新数组。新数组的每一项是由循环的每一项的返回值生成的,新数组的长度和原数组一致

// item 表示当前项目
// index 表示索引
arr.map((item, index)=>{
    
})

find

找到符合条件的第一项

findIndex

找到符合条件的索引。如果不存在返回-1

splice

替换,参数一 表示位置,参数二表示个数,后面的参数如果存在那么会进行在指定位置的填充

该方法向或者从数组中添加或者删除项目,返回被删除的项目该方法会改变原数组

slice(start,end)方法可从已有数组中返回选定的元素,返回一个新数组,包含从start到end(不包含该元素)的数组元素

该方法,不会改变原数组,,而是返回一个子数组,如果想删除数组中的一段元素,应该使用Array.splice()方法。

扩展运算符(…)

三个点,会生成一个新的对象。常常用在对象的浅拷贝上

  • 数组对象复制
//数组的复制
var arr1 = ['hello']
var arr2 =[...arr1]
arr2 // ['hello']
//对象的复制
var obj1 = {name:'chuichui'}
var obj2 ={...arr}
ob12 //  {name:'chuichui'}
  • 数组对象合并
//数组的合并
var arr1 = ['hello']
var arr2 =['chuichui']
var mergeArr = [...arr1,...arr2]
mergeArr  // ['hello','chuichui']
// 对象分合并
var obj1 = {name:'chuichui'}
var obj2 = {height:176}
var mergeObj = {...obj1,...obj2}
mergeObj // {name: "chuichui", height: 176}
  • 字符串转数组
var arr1 = [...'hello']
arr1 // ["h", "e", "l", "l", "o"]
  • 函数传参
function f(x,y,z){}
var args = [1,2,3]
f(...args)

// 以前的方法
f.apply(null,args);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值