js中Array方法归类解析
为什么要对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()
参考文献
js中Array方法归类解析的更多相关文章
- String方法,js中Array方法,ES5新增Array方法,以及jQuery中Array方法
相关阅读:https://blog.csdn.net/u013185654/article/details/78498393 相关阅读:https://www.cnblogs.com/huangyin ...
- js中Array方法重写(二):myForEach;myEvery;mySome;myFilter;myReduce
一.myForEach //myForeach 数组每个元素都执行一次回调函数 Array.prototype.myForEach = function(callback){ for(var i = ...
- 原生JS中apply()方法的一个值得注意的用法
今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...
- js中apply方法的使用
js中apply方法的使用 1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: Object.extend = function(destinat ...
- JS中Array数组的三大属性用法
原文:JS中Array数组的三大属性用法 Array数组主要有3大属性,它们分别是length属性.prototype属性和constructor属性. JS操作Array数组的方法及属性 本文总结了 ...
- 【转载】JS中bind方法与函数柯里化
原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情 ...
- paip.编程语言方法重载实现的原理及python,php,js中实现方法重载
paip.编程语言方法重载实现的原理及python,php,js中实现方法重载 有些语言,在方法的重载上,形式上不支持函数重载,但可以通过模拟实现.. 主要原理:根据参数个数进行重载,或者使用默认值 ...
- [JavaScript] JS中对Base64的解析
JS中对Base64的解析 <script type="text/javascript"> /** * UTF16和UTF8转换对照表 * U+00000000 – U ...
- js中settimeout方法加参数
js中settimeout方法加参数的使用. 简单使用看w3school 里面没有参数调用, 例子: <script type="text/javascript"> ...
随机推荐
- C#获取局域网主机
C#获取局域网主机 最近在做一个使用MSRDPClient来实现远程桌面功能,需要先判断一下该局域网主机是否在线,所以就需要获取一遍局域网主机. 首先获取本地IP地址,这里需要注意的是,要排除掉虚拟机 ...
- 51nod 2589 快速讨伐
51nod 如果不考虑升级操作,只有买装备操作和打怪操作,那么首先一定要先买装备,然后可以打死1级的怪,这些怪被打死的时间只要在第一次买装备后面好了,因为现在总操作是\(n+\sum a_i\)个,所 ...
- openlayers 添加标记点击弹窗 定位图标闪烁
环境vue3.0 ,地图为公用组件,将添加图标标记的方法放在公共地图的初始化方法里 同一时间弹窗和定位标识都只有一个,因而我把弹窗和定位标记的dom预先写好放到了页面 //矢量标注样式设置函数,设置i ...
- js方法的封装
封装是为了更好的调用,当我们很多页面都需要同一种方法的时候,为了避免每个页面都需要进行重写方法,增加工作量,这个时候就需要我们对部分公共的方法进行封装,这样便于更好的进行调用 我在写接口的时候用到了 ...
- 爬虫之request相关请求
一.解析json格式数据 (1) # (1)解析json 对象数据 # import requests # 返回的数据进行解析 # response = requests.get('http://ht ...
- Qualcomm_Mobile_OpenCL.pdf 翻译-3
3 在骁龙上使用OpenCL 在今天安卓操作系统和IOT(Internet of Things)市场上,骁龙是性能最强的也是最被广泛使用的芯片.骁龙的手机平台将最好的组件组合在一起放到了单个芯片上,这 ...
- CSS布局方式
1.内边距 padding <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- Codeforces Round #575 (Div. 3) (A. Three Piles of Candies)(数学)
A. Three Piles of Candies time limit per test1 second memory limit per test256 megabytes inputstanda ...
- u-boot log_init函数分析
log_init, int log_init(void){ struct log_driver *drv = ll_entry_start(struct log_driver, log_driv ...
- vue-awesome-swiper 轮播图使用
最近在做vue 的轮播图的问题,项目中也遇到一些问题,查了 swiper 官网资料, 还有vue-awesome-swiper的文案,最后把怎么使用这个插件简单的说下,啥东西都需要自己实践下,还是老规 ...