unshift、push、shift、pop

  • 这4个方法都会改变原数组
  • unshift() 从前面添加元素,push() 从后面追加元素,返回数组长度
  • shift() 删除第0个元素,pop() 删除最后一个元素,返回被删除的元素

slice

  • 不改变原数组
  • slice(m, n)返回原数组索引m(包含)到n(不包含)的元素数组。不传参数默认全部截取,只传一个参数,从该位置截取到末位。类似于String.prototype.substring
let arr = [1,2,3,4,5]
console.log(arr.slice()); // [ 1, 2, 3, 4, 5 ]
console.log(arr.slice(1)); // [ 2, 3, 4, 5 ]
console.log(arr.slice(2,4)); // [ 3, 4 ]
console.log(arr); // [1,2,3,4,5]

splice

  • 改变原数组。
  • splice(m,n,e1,e2,e3) 从索引m(包括)到n(不包括)的元素删除数组,再在该位置处添加e1,e2,e3。若n传入0,则只增加;若只传m和n,则只删除;若只传m,则从m位置删除到末位。放回删除元素数组
let arr = [1,2,3,4,5];
console.log(arr.splice(2), arr); // [ 3, 4, 5 ] [ 1, 2 ]
console.log(arr.splice(0,1,2), arr); // [ 1 ] [ 2, 2, 3, 4, 5 ]

concat

  • 拼接,不改变原数组
let arr = [1,2,3], arr1 = [4];
console.log(arr.concat(arr1, 5), arr); // [ 1, 2, 3, 4, 5, ] [ 1, 2, 3 ]
console.log([...arr, ...arr1, 5]); // [ 1, 2, 3, 4, 5 ] (对象也可以这样拼接,但重复的会覆盖,相当与 Object.assign)

of 和 from

  • of()类似于new Array(),但后者如果传入一个参数,则是设置数组长度。
  • from() 把伪数组转换为真数组,类似于[].slice.call()(或者写成Array.prototype.slice.call())
  • 伪数组有DOM集、arguments、{0: 'zero', 1: 'one', length: 2}
Array.of(1,2,3,4); // [ 1, 2, 3, 4 ]
Array.from({0: 'zero', 1: 'one', length: 2}); // [ 'zero', 'one' ]
判断数组的方法有
  • xx instanceof Array
  • Array.isArray()
  • Object.prototype.toString.call() === '[object Array]'
这里补充一点判断类型的技巧:
  • typeof操作符可以判断出number、boolean、string、function和undefined,而不能判断处具体的Object类型。

    • 判断Array要使用Array.isArray(arr);
    • 判断null请使用myVar === null;
    • 判断某个全局变量是否存在用typeof window.myVar === 'undefined';
    • 函数内部判断某个变量是否存在用typeof myVar === 'undefined'
  • 不必把任意类型转换为boolean再判断,因为可以直接写if (myVar) {...},如果需要转换可以用 !!myVar
  • 不要使用new Number()、new Boolean()、new String() 创建包装对象;
  • 用parseInt()或parseFloat()来转换任意类型为Number;用String()来转换任意类型为String,或者直接调用某个对象的toString()方法;

indexOf 和 includes

  • indexOf() 返回索引,不存在就返回 -1。inclues()返回布尔值。
  • NaN 不能通过indexOf()判断,它是通过“===”比较的。
arr = [1, '2', null, NaN];
arr.indexOf(NaN); // -1
arr.includes(NaN); // true

filter、find 和 findIndex

  • filter() 返回数组。find() 返回值,不存在就返回 undefined。 findIndex() 返回第一个匹配到的索引,不存在就返回 -1。
// let arr = [1, '2', null, NaN];
// arr.filter(item => typeof item === 'number'); // [1, NaN]
// arr.find(item => typeof item === 'number'); // 1
// arr.findIndex(item => typeof item === 'number'); // 0

some 和 every

  • 返回布尔值
  • some()用于检测数组中的元素是否有满足指定条件的;every()用于检测数组中所有元素是否都符合指定条件。
  • 不对空数组进行检测,不改变原数组
let arr = [Array(), [], {}, null]
let res1 = arr.some((item, index, arr) => {return Object.prototype.toString.call(item) === '[object Array]'
})
let res2 = arr.every((item, index, arr) => {return Object.prototype.toString.call(item) === '[object Array]'
})
console.log(res1,res2); // true false

map 和 forEach

  • map() 对数组中的每个元素进行处理,得到新的数组,不改变原数组
  • forEach() 相当于 for 循环,返回 undefined,不改变原数组
let res = [0,1,2,3,4].map((item, idx)=> item * idx); // [ 0, 1, 4, 9, 16 ]

reduce

  • reduce((accumulator, currentValue, currentIndex, array)=>{}, initValue)
  • 第一个参数是迭代器函数,函数的作用是对数组中从左到右的每一个元素进行处理。第二个可选参数是累加器的初始值。没有时,累加器第一次的值为currentValue。
  • accumulator 累加器,即函数上一次调用的返回值。第一次的时候为 initialValue || arr[0]
  • currentValue 数组中函数正在处理的的值,第一次的时候是 initialValue || arr[1]
  • currentIndex 数组中函数正在处理的的索引
  • array 函数调用的数组
console.log([1,2,3].reduce((a,b,c,d)=>{console.log(a,b,c,d);return a+b; // 下一次的a}, 4)
); // 10
/* 4 1 0 [ 1, 2, 3 ]5 2 1 [ 1, 2, 3 ]7 3 2 [ 1, 2, 3 ]
*/

当然累乘或者做其他业务也是可以的。

Array 的一些常用 API相关推荐

  1. drupal常用api

    最短的函数 // 语言字串,除了可以获取对应语言外,还可以设置字串变量.可以是!var, @var或 %var,%var就添加元素外层.@var会过滤HTML,!var会原样输出HTML,%var会添 ...

  2. JavaScript一些常用 API整理汇总

    JavaScript一些常用 API整理汇总 Array new Set() 数组去重 const arr = [3,4,4,5,4,6,5,7]; console.log(new Set(arr)) ...

  3. Java中Arrays.toString ()打印二维数组及Array数组的常用操作

    1.Java中Arrays.toString () 已知打印一维数组的API为System.out.println ( Arrays.toString ();,其参数为数组名或数组指针,其支持的数据类 ...

  4. Java --- 常用API

    常用API 方法重载: 方法名相同,方法接收的参数不同 static: 修饰的类,可以直接使用类名进行调用 方法名 说明 public static abs(int a) 返回参数的绝对值 publi ...

  5. js find的用法_React常用库Immutable.js常用API

    JavaScript 中的对象一般是可变的(Mutable),因为使用了引用赋值,新的对象简单的引用了原始对象,改变新的对象将影响到原始对象.如 foo={a: 1}; bar=foo; bar.a= ...

  6. php中数据类型、数组排序、循环语句、混编、操作本地文件流程、常用API、函数、魔术常量

    php中数据类型: php中有7种数据类型,分别是: //1.String字符串,用引号包裹的字符,如:$str = 'hello word';//2.Integer整型,可以是正数或负数,有十进制. ...

  7. 【java】简述CGLIB常用API

    1.概述 转载:简述CGLIB常用API 类似:[Spring]CGLIB动态代理 CGLIB,即Code Generation Library,是一个强大的.高性能的代码生成库.其被广泛应用于AOP ...

  8. numpy 常用api(三)

    numpy 常用api(一) 0. np.delete() 属非更易型操作,是为了获取返回值,对原始数据不会进行修改: from sklearn.datasets import load_iris i ...

  9. numpy 常用api(一)

    numpy 常用api(二) numpy 常用api(三) clip 两个版本: np.clip 作为成员函数,x.clip 将一序列(sequence)中所有小于零的元素置零: >>&g ...

最新文章

  1. 基于opencV的动态背景下运动目标检测及跟踪(修改版)
  2. pyspider architecture--官方文档
  3. transform插件
  4. 【MFC】可调整按钮位置的工具栏
  5. C#语言实现定时开启或禁用网卡小程序
  6. 十三个代码注释的小技巧
  7. 如何实现一个循环显示超长图片的控件
  8. 如何缩小码农和高手的差距
  9. 计算机上没有office2010,《我安装了office2010,为什么桌面-右键-新建中没有excel呢?》 excel文件找不到...
  10. Theano 中文文档 0.9 - 4. 要求
  11. TCP是如何保证数据的可靠传输的
  12. 北斗b2频点频率_北斗系统中“三”的奥秘
  13. [转]网站嵌入天气预报
  14. 解决Ubuntu刚装好的时候su命令密码错误的问题
  15. Java 泛型 (generics) 的使用
  16. 剑指Offer 64 求1+2+...+n
  17. Linux如何创建makefile文件,如何在Linux上为gcc创建简单的makefile?
  18. DB2 错误信息 SQLCODE SQLSTATE说明
  19. gif录制软件 LICEcap
  20. Android 如何屏蔽返回键和Home键

热门文章

  1. 设计模式之--原型模式
  2. 二叉树的前序、中序、后序遍历与创建
  3. sysctl.conf工作原理
  4. 关于 Oracle分页数据重复的问题
  5. linux配置ip地址 suse_SUSE Linux下设置IP的两种方法
  6. 4月18日 MySQL学习
  7. nginx 注释配置及详解
  8. springboot + mybatis + gradle项目构建过程
  9. Mac使用crontab来实现定时任务
  10. ArrayList 的实现原理