当前位置: 首页 > news >正文

数组Array的API1

数组的方法
arr.includes()
arr.every(fn(val,i))
arr.some(fn(val,i))
arr.filter(fn(val,i))
arr.map(fn(val,i))
ar.reduce(fn(prev,current),initValue)
arr.sort()或arr.sort(fn(a,b))

arr.forEach(fn(val,i))

arr.copyWithin(target,start,end)

arr.fill(target,start,end)

 

 

1.arr.includes()

理解:判断是否包含某个元素
使用:arr.includes()
参数:
返回值:返回值是布尔值。true,false
原数组:不改变

    let arr1 = [0,1,2,3,4,5];

    let res1 = arr1.includes(5);
    let res2 = arr1.includes(6);

    console.log('原数组',arr1);             // [0,1,2,3,4,5]
    console.log('返回值',res1);             // true
    console.log('返回值',res2);             // false
View Code

 

 

2.arr.forEach(function(val,i){})判断所有

理解:循环数组
使用:arr.forEach()
参数:
返回值:没有返回值
原数组:不改变

    let arr1 = ["a","b","c","d"];

    arr1.forEach((item,i,arr)=>{
        console.log(item,i,arr);    //a 0 (4) ["a", "b", "c", "d"]
    })
View Code

 


2.arr.every(function(val,i){})判断所有

理解:判断所有
使用:arr.every()
参数:
返回值:返回值是布尔值。true,false
原数组:不改变

返回值是布尔值。循环数组,每循环一次,执行一次回调函数,只要有一个元素的回调函数的返回值是false,就结束循环,结果就是false;只有所有元素符合回调函数的条件,结果就是true。

    let arr1 = [0,1,2,3,4,5];

    let res1 = arr1.every((item,i,arr)=>{
        console.log(item,i,arr);    //a 0 (4) ["a", "b", "c", "d"]
        return item > 2
    })

    let res2 = arr1.every((item,i,arr)=>{
        console.log(item,i,arr);    //a 0 (4) ["a", "b", "c", "d"]
        return item < 6
    })

    console.log('原数组',arr1);             //["a", "b", "c", "d"]
    console.log('返回值',res1);             //false
    console.log('返回值',res2);             //true
View Code

 


3.arr.some(function(val,i){})判断是否含有

理解:判断是否含有。
使用:arr.some()
参数:
返回值:返回值是布尔值。true,false
原数组:不改变

返回值是布尔值。循环数组,每循环一次,执行一次回调函数,只要有一个元素的回调函数的返回值是true,就结束循环,结果就是true;只有所有元素不符合回调函数的条件,结果就是false。

    let arr1 = [0,1,2,3,4,5];

    let res1 = arr1.some((item,i,arr)=>{
        console.log(item,i,arr);    //a 0 (4) ["a", "b", "c", "d"]
        return item > 2
    })

    let res2 = arr1.some((item,i,arr)=>{
        console.log(item,i,arr);    //a 0 (4) ["a", "b", "c", "d"]
        return item > 6
    })

    console.log('原数组',arr1);             //["a", "b", "c", "d"]
    console.log('返回值',res1);             //true
    console.log('返回值',res2);             //false
View Code

 


4.arr.filter(function(val,i){})

理解:过滤符合条件的元素,集合成数组
使用:arr.filter()
参数:
返回值:返回符合条件的元素组成的新数组
原数组:不改变

返回值是数组。循环数组,每循环一次,执行一次回调函数,只要元素满足回调函数的条件,就将元素添加到新数组,循环结束后,返回新数组。

    let arr1 = [0,1,2,3,4,5];

    let res1 = arr1.filter((item,i,arr)=>{
        console.log(item,i,arr);    //a 0 (4)  [0,1,2,3,4,5]
        return item >2
    })

    console.log('原数组',arr1);             // [0,1,2,3,4,5]
    console.log('返回值',res1);             // [3, 4, 5]
View Code

 

 

5.arr.map(function(val,i){})按条件映射出新的元素,集合成数组

理解:按条件映射出新的元素,集合成数组
使用:arr.map()
参数:
返回值:于原数组长度相等的新数组
原数组:不改变

返回值是数组。循环数组,每循环一次,执行一次回调函数,按照条件映射出新的元素,集合成新的数组,并返回数组。
技巧:拼接ul中li时,可以datas.map(function(){return '<li><li>'}).join('')

    let arr1 = [0,1,2,3,4,5];

    let res1 = arr1.map((item,i,arr)=>{
        console.log(item,i,arr);    //a 0 (4)  [0,1,2,3,4,5]
        return item + 'a'
    })

    console.log('原数组',arr1);             // [0,1,2,3,4,5]
    console.log('返回值',res1);             // ["0a", "1a", "2a", "3a", "4a", "5a"]
View Code

 

6.arr.reduce(callback,initValue)

理解:
使用:arr.reduce()
参数:
返回值:返回回调函数的计算之后的值。
原数组:不改变

callback(prevValue, currentValue)
prevValue: 上一次的值;
currentValue: 当前的值。 initValue会赋值给prevValue作为初始值,如果没有传入,那么prevValue的值为数组的第0个;callback每次返回的值将作为callback下一次执行的prevValue;循环完成以后最后一次callback返回的值将作为该reduce函数的结果。

arr.reduce()也可以完成arr.map()映射的任务。

    let arr1 = [0,1,2,3,4,5];

    let res1 = arr1.reduce(function(prev,current,i,ar){
        // console.log(prev,current,i,ar)
        return prev + current;
    },0)

    console.log('原数组',arr1);             // [0,1,2,3,4,5]
    console.log('返回值',res1);             // 15
View Code
//reduce--商品计价
    let goods = [
        {num : 3, price : 10},
        {num : 1, price : 1},
        {num : 2, price : 2},
        {num : 3, price : 3},
    ];

    let resGoods = goods.reduce(function (prev,current) {
        // console.log(prev,current,current.num,current.price)
        return prev + current.num*current.price
    },0)

    console.log(resGoods);            // 144
View Code

 

 

7.arr.sort(function(val,i){})

理解:重排
使用:arr.sort()
参数:
返回值:重拍之后的数组
原数组:改变


返回重排之后的数组。
a-b; 从小到大
a-b>0; 从小到大
a-b<0; 从大到小
b-a; 从大到小
b-a>0; 从大到小
b-a<0; 从小到大
1,true; 倒序
-1,false;顺序
0; 不变位置

    let arr1 = [2,5,1,8];
    let res1 = arr1.sort();         //没有参数----升序

    let arr2 = [2,5,1,8];
    let res2 = arr2.sort((a,b)=>a-b);         //a-b  a-b>0   b-a<0   升序-----本质a>b

    let arr3 = [2,5,1,8];
    let res3 = arr3.sort((a,b)=>b-a);         //b-a   b-a>0   a-b<0    降序-----本质b>a

    let arr4 = [2,5,1,8];
    let res4 = arr4.sort((a,b)=>1);         //1    顺序

    let arr5 = [2,5,1,8];
    let res5 = arr5.sort((a,b)=>-1);         //-1     倒序

    console.log('原数组',arr1);             //[1, 2, 5, 8]
    console.log('返回值',res1);             //[1, 2, 5, 8]

    console.log('原数组',arr2);             //[1, 2, 5, 8]
    console.log('返回值',res2);             //[1, 2, 5, 8]

    console.log('原数组',arr3);             //[8, 5, 2, 1]
    console.log('返回值',res3);             //[8, 5, 2, 1]

    console.log('原数组',arr4);             //[8, 1, 5, 2]
    console.log('返回值',res4);             //[8, 1, 5, 2]

    console.log('原数组',arr5);             //[2, 5, 1, 8]
    console.log('返回值',res5);             //[2, 5, 1, 8]
View Code

 


8.Array.from()

理解:将伪数组转成数组
使用:Array.from()
参数:
返回值:转换之后的数组
原数组:

    let arr1 = '012345';

    let res1 = Array.from(arr1);

    console.log('原数组',arr1);             // 012345
    console.log('返回值',res1);             // ["0", "1", "2", "3", "4", "5"]
View Code

 


9.Array.of()

理解:将伪数组转成数组
使用:Array.of()
参数:
返回值:转换之后的数组
原数组:

     let arr1 = '012345';

    let res1 = Array.of(arr1);

    console.log('原数组',arr1);             // 012345
    console.log('返回值',res1);             // ["012345"]
View Code

 

10.arr.copyWithin(target,start,end)

理解:
使用:arr.copyWithin(target,start,end)
参数:

  target(必须): 从该位置开始替换数据.
  > start(可选):从该位置开始读取数据.
  > end(可选):到该位置的前一个位置.


返回值:改变之后的数组
原数组:改变

    let arr1 = ['a','b','c','d','e','f','j'];
    let res1 = arr1.copyWithin(2,0);

    let arr2 = ['a','b','c','d','e','f','j'];
    let res2 = arr2.copyWithin(2,0,1);

    let arr3 = ['a','b','c','d','e','f','j'];
    let res3 = arr3.copyWithin(2);

    console.log('原数组',arr1);             // ["a", "b", "a", "b", "c", "d", "e"]
    console.log('返回值',res1);             // ["a", "b", "a", "b", "c", "d", "e"]
    console.log('原数组',arr2);             // ["a", "b", "a", "d", "e", "f", "j"]
    console.log('返回值',res2);             // ["a", "b", "a", "d", "e", "f", "j"]
    console.log('原数组',arr3);             // ["a", "b", "a", "b", "c", "d", "e"]
    console.log('返回值',res3);             // ["a", "b", "a", "b", "c", "d", "e"]
View Code

 

 

11.arr.fill(target,start,end)

理解:将目标字符,填充数组
使用:arr.fill(target,start,end)
参数:

  target(必须): 被填充的元素.
  > start(可选):从该位置开始读取数据.
  > end(可选):到该位置的前一个位置.


返回值:改变之后的数组
原数组:改变

    let arr1 = ['a','b','c','d','e','f','j'];
    let res1 = arr1.fill(2,0);

    let arr2 = ['a','b','c','d','e','f','j'];
    let res2 = arr2.fill(2,0,1);

    console.log('原数组',arr1);             // [2, 2, 2, 2, 2, 2, 2]
    console.log('返回值',res1);             // [2, 2, 2, 2, 2, 2, 2]
    console.log('原数组',arr2);             // [2, "b", "c", "d", "e", "f", "j"]
    console.log('返回值',res2);             // [2, "b", "c", "d", "e", "f", "j"]    
View Code

 

转载于:https://www.cnblogs.com/shaokevin/p/9777897.html

相关文章:

  • Linux下tomcat日志打印和传参乱码问题
  • React Native vs. Cordova.
  • BigDecimal使用中的一些注意事项
  • 4 - MySQL:多表查询
  • 运算
  • 走进软件第一次作业——组建团队 第四组作业
  • 部署 Django
  • react学习三
  • javascript编写带阴历的黄历
  • AS导入项目报错:Plugin with id 'com.android.application' not found.
  • 2018.10.17 NOIP模拟 管道(状压dp)
  • flask_sqlalchemy
  • Python语言程序设计基础(3)—— 基本数据类型
  • c# 反射实现模型深拷贝
  • 迅速上手:使用taro构建微信小程序基础教程
  • exif信息对照
  • gitlab-ci配置详解(一)
  • iOS | NSProxy
  • javascript 总结(常用工具类的封装)
  • PhantomJS 安装
  • Python爬虫--- 1.3 BS4库的解析器
  • REST架构的思考
  • Spring Cloud中负载均衡器概览
  • Twitter赢在开放,三年创造奇迹
  • Web Storage相关
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 阿里云应用高可用服务公测发布
  • 测试开发系类之接口自动化测试
  • 如何胜任知名企业的商业数据分析师?
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 算法系列——算法入门之递归分而治之思想的实现
  • 最近的计划
  • elasticsearch-head插件安装
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (3)选择元素——(17)练习(Exercises)
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)编辑寄语:因为爱心,所以美丽
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET CLR Hosting 简介
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .Net 代码性能 - (1)
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET多线程执行函数
  • /run/containerd/containerd.sock connect: connection refused
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思