摘要:数组原型提供的方法非常之多,主要分为三种直接修改原数组原数组不变,返回新数组数组遍历方法直接修改原数组的删除一个数组中的最后的一个元素,并且返回这个元素添加一个或者多个元素到数组末尾,并且返回数组新的长度删除数组的第一个元素,并返回这个元素
Javascript数组原型提供的方法非常之多,主要分为三种:
直接修改原数组
原数组不变,返回新数组
数组遍历方法
直接修改原数组的APIpop()
删除一个数组中的最后的一个元素,并且返回这个元素
push()
添加一个或者多个元素到数组末尾,并且返回数组新的长度
shift()
删除数组的第一个元素,并返回这个元素
unshift()
在数组开始处插入一些元素,并返回数组新的长度
splice()
从数组中添加/删除一些元素,然后返回被删除的元素
reverse()
颠倒数组中元素的顺序
sort()
用于对数组的元素进行排序
fill() -- ES6新增
将数组指定区间内的元素替换为某个值
copyWithin() -- ES6新增
数组内元素之间的替换
contact()
将传入的数组或者元素与原数组合并,组成一个新的数组并返回
slice()
连接两个或多个数组
join()
将数组中的所有元素连接成一个字符串
indexOf()
用于查找元素在数组中第一次出现时的索引,如果没有,则返回-1
lastIndexOf()
用于查找元素在数组中最后一次出现时的索引,如果没有,则返回-1
includes() -- ES7新增
用来判断当前数组是否包含某个指定的值,如果是,则返回 true,否则返回false
针对数组遍历方法,从
是否影响原数组
是否可中途跳出
有无返回值
三个方面来讨论
forEach()
指定数组的每项元素都执行一次传入的函数,返回值为undefined
let arr=[1,2,3,4]; arr.forEach(function(value,key,arr){ //值,索引,数组(默认为选定数组) return item; //进行任何操作 }) //只返回undefined
无return 返回 undefined;
有return:
仅有return:返回undefined;
return false:返回undefined;
return true:返回undefined;
简言之,仅返回undefined;
总结:
不会影响原数组
不会被中断
仅返回undefined
map()
遍历数组,使用传入函数处理每个元素,并返回函数的返回值组成的新数组
无return 返回由 undefined组成的数组,数组个数与原数组个数相同;
有return
return 表达式,返回有响应表达式 组成的数组
简言之,返回值,必定是一个与原数组个数相等的数组;但是数组中的值,根据所做的处理有所不同;
总结:
不会影响原数组
不能被中断
返回值,必定是一个与原数组个数相等的数组;但是数组中的值,根据所做的处理有所不同
filter()
使用传入的函数测试所有元素,并返回所有通过测试的元素组成的新数组
没有return,返回值为空数组;
有return:
仅有return,返回空数组;
return false,返回空数组;
return true,返回原数组;(是深拷贝还是浅拷贝)
return 其余表达式,如果有判断条件,返回相应判断条件构成的数组;没有判断条件,返回原数组;
简言之,返回值,要么为空数组,要么为原数组,要么为原数组部分元素组成的数组;
总结:
不会影响原数组
不能被中断
返回值,要么为空数组,要么为原数组,要么为原数组部分元素组成的数组
every()
使用传入的函数测试所有元素,每一个元素经传入的函数处理都返回true该方法才返回true,否则返回false(验证是否每一个元素都满足测试函数)
验证是否有元素都满足测试函数,eg: return (element >= 10)
无return:返回false;
有return:
仅有return :返回false;
return false:返回false;
return true:返回true;
简言之,只返回 true 或者 false
总结:
不会影响原数组
不能被中断
只返回true 或者 false
some()
使用传入的函数测试所有元素,只要有一个元素经传入的函数处理返回true该方法就返回true,否则返回false(验证是否有元素都满足测试函数)
无return,返回 false
有return:
仅有return,返回false;
return false,返回false;
return true,返回 true;并且后续被中断
简言之,仅返回true、或者false
总结:
不会影响原数组
return true,可以被中断
仅返回true、或者false
find() -- ES6新增
返回数组中第一个满足条件的元素(如果有的话), 如果没有,则返回 undefined
无return:返回undefined
有return:
仅有return:返回undefined;
return false:返回undefined;
return true:返回相应的索引值,并且中断
总结:
不会影响原数组
return true 中断循环
返回 undefined 或者 相应索引值
findIndex() -- ES6新增
返回数组中第一个满足条件的元素的索引(如果有的话), 如果没有,则返回 -1
keys() -- ES6新增
返回一个数组索引的迭代器
values() -- ES6新增
返回一个数组迭代器对象,该对象包含数组中每个索引的值
entries() -- ES6新增
返回一个数组迭代器对象,该对象包含数组中每个索引的键值对
reduce()
接收一个方法作为累加器,数组中的每个值(从左至右) 开始合并,最终为一个值
reduceRight()
接收一个方法作为累加器,数组中的每个值(从右至左) 开始合并,最终为一个值
最终总结下,对于数组遍历方法,forEach map filter every some find,六个方法,都不会改变原数组,只有some find 可中途跳出循环,返回结果看上述分析;
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/102110.html
摘要:系统,扎实的语言基础是一个优秀的前端工程师必须具备的。第一个参数为调用函数时的指向,随后的参数则作为函数的参数并调用,也就是。和的区别只有一个,就是它只有两个参数,而且第二个参数为调用函数时的参数构成的数组。 系统,扎实的 javascript 语言基础是一个优秀的前端工程师必须具备的。在看了一些关于 call,apply,bind 的文章后,我还是打算写下这篇总结,原因其实有好几个。...
摘要:原文发布在数组应该是日常开发中最常见的数据结构了,虽然常见,但是却不一定能优雅地处理好,中数组的处理方法很多,各个方法的参数返回值是否修改原数组等也容易记混。 原文发布在:http://blog.xiaofeixu.cn/2017... 数组应该是日常开发中最常见的数据结构了,虽然常见,但是却不一定能优雅地处理好,JavaScript中数组的处理方法很多,各个方法的参数、返回值、是否修...
摘要:专题系列第三篇,讲解各种数组去重方法,并且跟着写一个前言数组去重方法老生常谈,既然是常谈,我也来谈谈。它类似于数组,但是成员的值都是唯一的,没有重复的值。 JavaScript 专题系列第三篇,讲解各种数组去重方法,并且跟着 underscore 写一个 unique API 前言 数组去重方法老生常谈,既然是常谈,我也来谈谈。 双层循环 也许我们首先想到的是使用 indexOf 来循...
摘要:而数组元素去重是基于运算符的。而如果有迭代函数,则计算传入迭代函数后的值,对值去重,调用方法,而该方法的核心就是调用方法,和我们上面说的方法一异曲同工。 Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中。 阅读一些著名框架类库的源码,就好像...
摘要:等内置的方法和属性都是不可枚举的北京北京可以遍历可枚举但对象,包括不是它本身但存在于原型链上的属性。北京循环可迭代对象循环可迭代对象包括,,,,,类数组的对象比如对象对象以及生成器对象等。 在JavaScript中,我们经常需要去循环迭代方法操作数组对象等,常见等循环方法有 for、for in、for of、forEach等。 1.for循环 for循环是最基础常见的一种循环,圆括号...
阅读 3867·2021-07-28 18:10
阅读 2576·2019-08-30 15:44
阅读 1081·2019-08-30 14:07
阅读 3454·2019-08-29 17:20
阅读 1577·2019-08-26 18:35
阅读 3533·2019-08-26 13:42
阅读 1816·2019-08-26 11:58
阅读 1585·2019-08-23 18:33