为什么要对Array方法进行归类解析

因为它常用,而且面试必问

改变原数组的方法

pop 删除并返回数组最后一个元素
push 从末尾给数组添加元素,返回新数组length值
reverse 颠倒数组元素,返回颠倒后的数组
shift 删除并返回第一个元素值
sort 数组排序
splice 删除指定位置开始指定长度的元素,返回被删除的项目。
unshift 向数组开头添加多个元素,返回新数组长度

不改变原数组

concat 返回合并后数组的副本
join 返回一个通过连接符连接数组元素的字符串
slice 返回选中元素的新数组
toString 返回字符串等同于join()

如何循环一次删除多个元素并改变数组长度

for (var i = arr.length - 1; i >= 0; i--){
if(arr[i] === 1){
arr.splice(i,1)
}
}

操作Array元素的callback的方法集合

forEach、map、filter、every、some、reduce、reduceRight

  • forEach对元素上执行callback的操作
var a = ['1', 20, 30];
a.forEach((item, index, a)=>{
++item
}) // 不会改变a值
a.forEach((item, index)=>{
a[index] = ++item
}) // 改变a值
  • map对元素callback并返回一个由callback返回值组成的新数组
var a = ['1', 20, 30];
var b = a.map((item, index, a)=>{
return ++item // 如果没有return会输出undefined
}) // [2,22,32]
  • filter返回元素callback返回值为true的元素组成的新数组
var a = ['1', 20, 30];
console.log(a.filter((item)=>{
return typeof item === 'string'
})) //['1']
  • every当所有元素的callback都返回true时,值为true。用于判断所有元素是否符合某一条件
var a = ['1', 20, 30];
console.log(a.every((item)=>{
return typeof item === 'string'
})) // false
  • some只要其中一个元素callback返回true,值为true。用于判断某一个元素符合单一条件的情况
var a = ['1', 20, 30];
console.log(a.some((item)=>{
return typeof item === 'string'
})) // true
  • reduce和reduceRight是数组元素两两按照callback的逻辑进行递归处理。返回处理完以后的结果。
var a = ['1', 20, 30];
var total = a.reduce(function(first, second) { return first + second; }, 2);
console.log(total) // 212030(((第二个参数2+'1')+20)+30)
var total = a.reduceRight(function(first, second) { return first + second; }, 2);
console.log(total) // 521(((第二个参数2+30)+20)+'1')

如何循环删除多个元素,数组长度不变

for (let i = 0; i < arr.length; i++){
if(arr[i] === 1){
delete arr[i]
}
}
// 删除对应元素后,对应元素被置换为undefined,但是对应的i值(i in arr为false),直接复制arr[i]=undefined时i in arr 为 true

ES6 数组去重

let arr = [1,2,3,1,2,3,4]
let set = new Set(arr)
arr = [...set]

数组的一些扩展方法

Array.from(),Array.of(),Array.prototype.copyWithin(),includes()

参考文献

Array的扩展方法

js中Array方法归类解析的更多相关文章

  1. String方法,js中Array方法,ES5新增Array方法,以及jQuery中Array方法

    相关阅读:https://blog.csdn.net/u013185654/article/details/78498393 相关阅读:https://www.cnblogs.com/huangyin ...

  2. js中Array方法重写(二):myForEach;myEvery;mySome;myFilter;myReduce

    一.myForEach //myForeach 数组每个元素都执行一次回调函数 Array.prototype.myForEach = function(callback){ for(var i = ...

  3. 原生JS中apply()方法的一个值得注意的用法

    今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...

  4. js中apply方法的使用

    js中apply方法的使用   1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: Object.extend = function(destinat ...

  5. JS中Array数组的三大属性用法

    原文:JS中Array数组的三大属性用法 Array数组主要有3大属性,它们分别是length属性.prototype属性和constructor属性. JS操作Array数组的方法及属性 本文总结了 ...

  6. 【转载】JS中bind方法与函数柯里化

    原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情 ...

  7. paip.编程语言方法重载实现的原理及python,php,js中实现方法重载

    paip.编程语言方法重载实现的原理及python,php,js中实现方法重载 有些语言,在方法的重载上,形式上不支持函数重载,但可以通过模拟实现.. 主要原理:根据参数个数进行重载,或者使用默认值 ...

  8. [JavaScript] JS中对Base64的解析

    JS中对Base64的解析 <script type="text/javascript"> /** * UTF16和UTF8转换对照表 * U+00000000 – U ...

  9. js中settimeout方法加参数

    js中settimeout方法加参数的使用. 简单使用看w3school  里面没有参数调用,  例子: <script type="text/javascript"> ...

随机推荐

  1. jquery html select 清空保留第一项

    <select id="a"> <option>1</option> <option>2</option> <op ...

  2. Elasticsearch操作索引

    目录 操作索引 1. 基本概念 2. 创建索引 2.1 语法 2.2查看索引设置 2.3.删除索引 2.4 映射配置 2.5 新增数据 2.6 修改数据 2.7 删除数据 3. 查询 3.1 基本查询 ...

  3. Android-Widget桌面小组件

    1, 掌握Widget的用:Widget的用途,能够添加到手机桌面的程序 2, Widget的特点和用法步骤: 特点:快捷,方便,个性化,可自定义功能,可及时控制更新Widget显示内容 3, 用法步 ...

  4. RabbitMQ入门教程(一):安装和常用命令

    原文:RabbitMQ入门教程(一):安装和常用命令 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

  5. RateLimit--使用guava来做接口限流

    转:https://blog.csdn.net/jiesa/article/details/50412027 一.问题描述   某天A君突然发现自己的接口请求量突然涨到之前的10倍,没多久该接口几乎不 ...

  6. 一个常用的通过curl发送HTTP请求的函数

    function: function curl_get($url, $params) { return curl_http($url, $params, 'GET'); } function curl ...

  7. springboot学习2

    项目导入eclipse 先检测是否安装有gradle插件 然后点击  finish 按钮 hello world实例 Application.java package com.example.demo ...

  8. Linux学习--第十一天--source、环境变量目录、欢迎信息、正则、cut、awk、sed、sort、判断表达式、if、for、case、一些脚本

    source source /root/.bashrc #让修改后的配置文件在不重启系统的情况下生效.source等同于. 环境变量目录 /etc/profile /etc/profile.d/*.s ...

  9. laravel中间件失效,配置文件重新加载

    composer dump-autoload php artisan cache:clear 清理视图缓存 php atisan view:clear 清除运行缓存 php artisan cache ...

  10. scrapy 知乎关键字爬虫spider代码

    以下是spider部分的代码.爬知乎是需要登录的,建议使用cookie就可以了,如果需要爬的数量预计不多,请不要使用过大的线程数量,否则会过快的被封杀,需要等十几个小时账号才能重新使用,比起损失的这十 ...