数组的方法

1.普通for循环

对数组遍历对普通用法

let arr=[1,2,3,4,]
for(let i=0;
i<arr.length;i++){
console.log(arr[i])
}
//1,2,3,4

2,forEach()

//代替普通for循环,无返回值,里面接收两个个参数,后面一样,都可以接受两个参数

一. 函数,可以接收三个参数1:数组的每一项,2:每一项的index,3:数组自身;

let arr=[1,2,3,4,]
arr.forEach((val,index,arr) => {
    console.log(val,index,arr)
});
//1 0 [ 1, 2, 3, 4 ]
//2 1 [ 1, 2, 3, 4 ]
//3 2 [ 1, 2, 3, 4 ]
//4 3 [ 1, 2, 3, 4 ]

二.this

let arr=[1,2,3,4,]
arr.forEach((val,index,arr) => {
    console.log(val,index,arr)
});
//window 1 0 [ 1, 2, 3, 4 ]
//window 2 1 [ 1, 2, 3, 4 ]
//window 3 2 [ 1, 2, 3, 4 ]
//window 4 3 [ 1, 2, 3, 4 ]

** 注意没有返回值

let arr = [1, 2, 3, 4, ]
let a = arr.forEach((val, index, arr) => {
        return 1
    });
  console.log(a)//undefined

3. map()

对数给进行遍历,有返回值,也是接收两个参数,使用map都要有返回值,如果不用返回值就可以直使用forEach 了,返回值是一个新的数组,

let arr = [1, 2, 3, 4, ]
let a = arr.map((item, index, arr) => {
        console.log(item, index, arr)
    })
 console.log(a)

 //1 0 (4) [1, 2, 3, 4]
 //2 1 (4) [1, 2, 3, 4]
 //3 2 (4) [1, 2, 3, 4]
 //4 3 (4) [1, 2, 3, 4]
 //(4) [undefined, undefined, undefined, undefined]
---------------------------------------------------------------
//有返回值

let arr = [1, 2, 3, 4, ]
let a = arr.map((item, index, arr) => {
       return item
    })
  console.log(a)
//(4) [1, 2, 3, 4]

可以重新对数据整理,** 会改变原来的arr值

let arr=[
{name:'foo',age:20},
{name:'bar',age:20},
{name:'tom',age:18},
{name:'boo',age:23}
]

let newArr=arr.map((item)=>{
    let obj={}
    obj.name = item.name;
    obj.age = item.age += 1
});

 console.log(newArr);

//(4) [{…}, {…}, {…}, {…}]
//0: {name: 'foo', age: 21}
//1: {name: 'bar', age: 21}
//2: {name: 'tom', age: 19}
//3: {name: 'boo', age: 24}
//length: 4
//[[Prototype]]: Array(0)

console.log(arr);
//(4) [{…}, {…}, {…}, {…}]
//0: {name: 'foo', age: 21}
//1: {name: 'bar', age: 21}
//2: {name: 'tom', age: 19}
//3: {name: 'boo', age: 24}
//length: 4
//[[Prototype]]: Array(0)

4.filter()

对数组过行筛选过滤,返回满足条件的项,组成一个数组

let arr=[1,2,3,4,5]
let b=arr.filter(item=>{
    return item >3
})
console.log(b)
//(2) [4, 5]
------------------------

let arr = [
        {title:'新闻',read:1000,hot:true},
        {title:'疫情',read:1000,hot:false},
        {title:'aaa',read:1000,hot:true},
        {title:'bbb',read:1000,hot:false},
        {title:'ccc',read:1000,hot:true},
    ]
let b = arr.filter(item => {
        return item.hot
    })
console.log(b)

//(3) [{…}, {…}, {…}]
//0: {title: '新闻', read: 1000, hot: true}
//1: {title: 'aaa', read: 1000, hot: true}
//2: {title: 'ccc', read: 1000, hot: true}
//length: 3
//[[Prototype]]: Array(0)

5.some()

类似查找功能,只用数组里面一个满足条件就返回true

let arr = [
        {title:'新闻',read:1000,hot:true},
        {title:'疫情',read:1000,hot:false},
        {title:'aaa',read:1000,hot:true},
        {title:'bbb',read:1000,hot:false},
        {title:'ccc',read:1000,hot:true},
    ]
    let b = arr.some(item => {
        return item.title==='ccc'
    })
    console.log(b)//true

6.every()

数组的每一项都要符合条件才返回true

let arr = [
        {title:'新闻',read:1000,hot:true},
        {title:'疫情',read:1000,hot:false},
        {title:'aaa',read:1000,hot:true},
        {title:'bbb',read:1000,hot:false},
        {title:'ccc',read:1000,hot:true},
    ]
    let b = arr.some(item => {
        return item.read===1000
    })
    console.log(b)//true

7.reduce()

从左至右求数组的和,类似于阶乘

raduce(prev,cur,index,arr)prev上一次计算的结果,cur当前个,当前index(从1开始的),arr自身

let arr = [1,2,3,4,5]
    let b=arr.reduce((prv,cur,index,arr)=>{
    console.log(index)
        return prv+cur
    })
    console.log(b)
//1
//2
//3
//4
//15

let arr = [1, 2, 3, 4, 5]
    let b = arr.reduce((prv, cur, index, arr) => {
        return prv * cur
    })
    console.log(b)//120

let arr =[2,2,3]
let b=arr.reduce((prv,cur,index,arr)=>{
        return prv ** cur
})
console.log(b)//64

//prv**cur-->2**3=2^3=8 es2017出现的幂的算法

2 ** 3=2^3=8,新的运算符** 想当于Math.pow(2,3)

8.reduceRight()

从右边至左,顺序是相反的

let arr = [1, 2, 3, 4]
    let b = arr.reduceRight((prv, cur, index, arr) => {
        console.log(prv,cur)
        return prv * cur
    })
    console.log(b)
//5 4
//20 3
//60 2
//120 1
//120

9.for...of...循环

arr.keys()数组的index

arr.entries()数组的某一项的index和value组成的数组

let arr = ['apple','banana','orange','tomato']
    for(let val of arr){
        console.log(val);
    }
//apple
//banana
//orange
//tomato
-------------------------------------------------
 let arr = ['apple','banana','orange','tomato']
    for(let index of arr.keys()){
        console.log(index);
    }
//0
//1
//2
//3
--------------------------------------------------
 let arr = ['apple','banana','orange','tomato']
    for(let item of arr.entries()){
        console.log(item);
    }
//[0, 'apple']
//[1, 'banana']
//[2, 'orange']
//[3, 'tomato']

10.'...'扩展运算符

Array.form()把argument这样的类数组转成数组,有length就基本上就可以转成数组

function show(){
      console.log(arguments)
  }
show(1,2,3,4)


// Arguments(4) [1, 2, 3, 4, callee: ƒ, Symbol(Symbol.iterator): ƒ]
// 0: 1
// 1: 2
// 2: 3
// 3: 4
// callee: ƒ show()
// length: 4
// Symbol(Symbol.iterator): ƒ values()
// [[Prototype]]: Object

---------------------------------------------
function show(){
      console.log(...arguments)
  }
show(1,2,3,4)//1 2 3 4
---------------------------------------------
function show(){
    let args=Array.from(arguments)
      console.log(args)
  }
show(1,2,3,4)//(4) [1, 2, 3, 4]
//也可以写成
----------------------------------
function show() {
        console.log([...arguments])
    }
show(1, 2, 3, 4)//(4) [1, 2, 3, 4]
let arr=[1,2,3,4,5]
let arr2=[...arr]
//[1,2,3,4,5]
--------------------
let arr=[1,2,3,4,5]
let arr2=Array.from(arr)//[1,2,3,4,5]
---------------------
let str="zhang"
    let arr=Array.from(str)
    console.log(arr)// ['z', 'h', 'a', 'n', 'g']

Array.fo():把一组值转成数组

let arr=Array.of('foo','bar','aaa')
    console.log(arr)//(3) ['foo', 'bar', 'aaa']

11.find()

查找第一个满足条件的值并返回,找不到返回undefined

let arr=[1,2,3,4,5,6]
    let b=arr.find((item,index,arr)=>{
        return item>3
    })
    console.log(b)//4
---------------------------
let arr=[1,2,3,4,5,6]
    let b=arr.find((item,index,arr)=>{
        return item>7
    })
    console.log(b)//undefined

12.findIndex()

返回第一个符合条件的位置,没找到返回-1

let arr=[1,2,3,4,5,6]
    let b=arr.findIndex((item)=>{
        return item>3
    })
    console.log(b)//3

13.arr.fill()

填充(填充的东西,开始位置,结束位置)

let arr=[1,2,3,4,5,6]
    arr.fill('a',1,4)
    console.log(arr)
//(6) [1, 'a', 'a', 'a', 5, 6]

14.includes()

str.includes()判断字符串的包含

判断数组里面有没有该值,没有返回false,有返回true

let arr=[1,2,3,4,4,5,4,3,4,6,7,5,6]
    let b=arr.includes(2)
    console.log(b)//true

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值