Array方法学习总结
Array 对象支持在 单个变量名下存储多个元素。
Array方法:
在遍历多个元素的方法中,下面的方法在访问索引之前执行in检查,并且不将空槽与undefined合并:
concat() 返回一个新数组,改数组由被调用的数组与其他数组或值连接形成。
copyWithin() 在数组内复制数组元素序列。
every() 如果调用数组中的每个元素都满足测试函数,则返回true。
filter() 返回一个新数组,其中包含调用所提供的筛选函数返回为true的所有数组元素。
flat() 返回一个新数组,所有子数组元素递归地连接到其中,直到指定的深度。
flatMap() 对调用数组的每个元素调用给定的回调函数,然后将结果平展一层,返回一个新数组。
forEach() 对调用数组中的每个元素调用函数。
indexOf() 返回在调用数组中可以找到给定元素的第一个最小索引。
lastIndexOf() 返回在调用数组中可以找到给定元素的最后一个(最大)索引,如果找不到则返回-1.
map() 返回一个新数组,其中包含对调用数组中的每个元素调用函数的结果。
reduce() 对数组的每个元素(从左到右)执行用户提供的 reducer 回调函数,将其简化为单个值。
reduceRight() 同上。
reverse() 反转数组中元素的顺序。
slice() 提取调用数组的一部分并返回一个新数组。
some() 如果调用数组中至少有一个元素满足提供的测试函数,则返回true。
sort() 对数组的元素进行排序并返回该数组。
splice() 从数组中添加和/或删除元素。
下面这些方法将空槽视为undefined:
entries() 返回一个新的数组迭代器对象,其中包含数组中每个索引的键值对。
fill() 用静态值填充数组中从开始索引到结束索引的所有元素。
find() 返回数组中满足提供的测试函数的第一个元素的值,如果没有找到合适的元素,则返回undefined。
findIndex() 返回数组中满足提供的测试函数的第一个元素的索引,如果没有找到合适的元素,则返回-1.
findLast() 返回数组中满足提供的测试函数的最后一个元素的值,如果没有找到合适的元素,则返回undefined。
findLastIndex() 返回数组中满足所提供测试函数的最后一个元素的索引,如果没有找到合适的元素,则返回-1.
group() 根据测试函数返回的字符串,将数组的元素分组到一个对象中。
groupToMap() 根据测试函数返回的值,将数组的元素分组到map中
includes() 确定调用数组是否包含一个值,根据情况返回true或false。
join() 将数组的所有元素连接为字符串。
keys() 返回一个新的数组迭代器,其中包含调用数组中每个索引的键。
values() 返回一个新的数组迭代器对象,该对象包含数组中每个索引的值。
toLocaleString() 返回一个表示调用数组及其元素的本地化字符串
复制方法和修改方法:
原数组的元素按如下方法复制到新数组中:
对象: 对象引用被复制到新数组中。原数组和新数组都引用同一个对象。即如果一个被引用的对象被修改,
新数组和原数组都可以看到更改。
基本类型: 如字符串,数字和布尔值(不是String, Number和Boolean对象):他们的值被复制到新数
组中。
构造函数
Array()
创建一个新的Array对象。
创建数组
三种创建新数组方法:
1.使用数组字面量
const arr = [1,2];
2.使用Array()构造函数
const arr = new Array('1','2');
3.使用 String.prototype.split()从字符串构建数组
const arr = '1,2'.split(',');
从数组中创建一个字符串
join()方法从 fruits 数组中创建一个字符串。
const arr = ['a','b'];
const arrString = arr.join(','); // 输出 'a,b'
通过索引访问数组元素:
const arr = ['a','b'];
arr[0];
在数组中查找元素的索引:
indexOf() 方法查找字符串 a 在 arr数组中的位置(索引)
const arr = ['a','b'];
console.log(arr.indexOf('a')); // 0
检查数组是否包含某个元素
includes()方法存在则返回true,反之为false。
indexOf()方法测试索引值不是 -1。
如果indexOf()不返回-1,则数组包含给定的元素。
将元素添加到数组中:
push()方法向数组追加一个新字符串。
移除数组中的最后一个元素:
pop()方法从数组中移除最后一个元素。
从数组末尾移除多个元素:
splice()方法从数组中移除多个元素
例如:
const arr = ['a','b','c','d','e'];
const start = -3;
const removedItems = arr.splice(start);
console.log(arr); // ['a','b']
console.log(removedItems); //['c','d','e']
splice方法: 可以按索引移除单个元素。
splice方法: 可以按索引移除多个元素。
splice方法: 替换数组中的多个元素。
将数组截断为前N个元素:
splice方法将数组截断到只剩下前2个元素
例如:
const arr = ['a','b','c','d','e'];
const start = 2;
const removedItems = arr.splice(start);
移除数组中的第一个元素:
使用 shift 方法从数组中移除第一个元素。
const arr = ['a','b','c'];
const removedItem = arr.shift();
从数组开头移除多个元素
splice方法从数组中移除多个元素
const arr = ['a','b','c','d','e'];
const start = 0;
const deleteCount = 3;
const removedItems = arr.splice(start, deleteCount);
console.log(arr);//['d','e']
console.log(removedItems);//['a','b','c']
向数组开头添加一个新的元素
unshift()方法在索引0处向数组添加一个新元素-使其成为数组中新的第一个元素。
例如:
const arr = ['a','b'];
const newArr = arr.unshift('c');
console.log(arr); // ['c','a','b']
按索引移除单个元素
使用splice方法从 arr数组中删除字符串
const arr = ['a','b','c'];
const start = arr.indexOf('b');
const deleteCount = 1;
const removedItems = arr.splice(start, deleteCount);
console.log(arr); //['a','c'];
console.log(removedItems);// ['b']
OR
const arrs = ['a','b','c','d']
const remove = arrs.splice(1,2); //移除多个元素
替换数组中的多个元素
使用splice方法将arr数组中的最后两个元素替换为新元素。
const arr = ['a','b','c'];
const start = -2;
const deleteCount = 2;
const remove = arr.splice(start, deleteCount, 'e','f');
console.log(arr);// [a, e, f]
console.log(remove); // [b,c]
遍历数组
使用 for...of循环遍历arr数组,将每一个元素打印到控制台
const arr = [a,b,c];
for( const item of arr){
console.log(item);
}
对数组中的每个元素调用函数
使用forEach方法在arr数组中的每个元素上调用一个函数;该函数将每个元素以及元素的索引号打印到控制台
const arr = [a,b,c,d]
arr.forEach((item, index)=>{
console.log(item, index);
})
合并多个数组
concat 方法将 arr1数组与arr2数组合并,生成一个新的 arrs数组。
const arr1 = [a,b,c];
const arr2 = [d, e];
const arrs = arr1.concat(arr2);
复制数组
从现有的 arr数组创建新数组的三种方法: 首先使用展开语法, 然后使用 from() 方法, 然后使用 slice() 方法。
const arr = [a,b];
const arrCopy = [...arr];
const arrCopy2 = Array.from(arr);
const arrCoppy3 = arr.slice();
所有内置的数组复制操作(展开语法, Array.from(),Array.prototype.slice() 和 Array.prototype.concat())
都会创建浅拷贝。如果想要一个数组的深拷贝,可以使用 JSON.stringify()将数组转换成一个 JSON字符串,然后使用
JSON.parse()将字符串转换回一个完全独立于原数组的新数组。
const arrDeepCopy = JSON.parse(JSON.stringigy(arr));
Array静态方法
Array.from(): 从数组类对象或可迭代对象创建一个新的Array实例。
Array.isArray(): 如果参数是数组则返回true,否则返回false。
Array.of(): 创建一个新的Array实例,具有可变数量的参数,而不管参数的数量或类型。
Array实例属性
Array.prototype.length: 反映数组中元素的数量。
学习网址:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array
Array方法学习总结的更多相关文章
- javascript Array 方法学习
原生对象Array学习 Array.from() 从类似数组的对象或可迭代的对象返回一个数组 参数列表 arraylike 类似数组的对象或者可以迭代的对象 mapfn(可选) 对对象遍历映 ...
- Array方法学习小结
原生js forEach()和map()遍历 A:相同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...
- S5中新增的Array方法详细说明
ES5中新增的Array方法详细说明 by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wor ...
- ES5中新增的Array方法详细说明
一.前言-索引 ES5中新增的不少东西,了解之对我们写JavaScript会有不少帮助,比如数组这块,我们可能就不需要去有板有眼地for循环了. ES5中新增了写数组方法,如下: forEach (j ...
- 【原】javascript笔记之Array方法forEach&map&filter&some&every&reduce&reduceRight
做前端有多年了,看过不少技术文章,学了新的技术,但更新迭代快的大前端,庞大的知识库,很多学过就忘记了,特别在项目紧急的条件下,哪怕心中隐隐约约有学过一个方法,但会下意识的使用旧的方法去解决,多年前ES ...
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
ES5中,一共有9个Array方法 Array.prototype.indexOf Array.prototype.lastIndexOf Array.prototype.every Array.pr ...
- js Array 方法总结
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Javascript Array 方法整理
Javascript Array 方法整理 Javascript 数组相关方法 说明 大多数其它编程语言不允许改变数组大小,越界访问索引会报错,但是 javascript不会报错,不过不建议直接修改a ...
- ECMAScript5中新增的Array方法实例详解
ECMAScript5标准发布于2009年12月3日,它带来了一些新的,改善现有的Array数组操作的方法.(注意兼容性) 在ES5中,一共有9个Array方法:http://kangax.githu ...
- 单片机和Linux都想学_换个两全的方法学习单片机
本节教你如何学习单片机,如何选择合适的开发板和开发工具. 现在我们知道单片机是要学习的,那么怎么去学习单片机?在上一课我们说不要使用老一套的方法学习,实际上是指的两个问题. 第一:选择什么开发板: 第 ...
随机推荐
- 我做的百度飞桨PaddleOCR .NET调用库
我做的百度飞桨PaddleOCR .NET调用库 .NET Conf 2021中国我做了一次<.NET玩转计算机视觉OpenCV>的分享,其中提到了一个效果特别好的OCR识别引擎--百度飞 ...
- GoAccess实现请求监
GoAccess实现请求监控 简介 GoAccess是一款开源的实时web日志分析器和交互式查看器,用于可视化查看HTTP统计信息,可以系统的终端上运行,也可以通过浏览器运行: 本文通过使用GoAcc ...
- LG P4717 【模板】快速莫比乌斯/沃尔什变换 (FMT/FWT)
\[C_k = \sum_{i|j=k}A_i B_j \] 这样的或卷积可以做一次 \(\text{FWT}\),把数组变为 \(\widehat{A}_i = \sum_{j\subseteq i ...
- JZOJ 4250.路径
\(\text{Solution}\) \(30\) 分暴搜合法路径 另 \(30\) 分状压 设 \(f_{i,j,k}\) 表示当前到第 \(i\) 个点,走过的点状态为 \(j\),走过的路径长 ...
- knock:端口敲门服务
knock:端口敲门服务 端口敲门服务,即:knockd服务.该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来"敲门",使系统开启需要访问的 ...
- 代码随想录算法训练营day18 | leetcode 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树
LeetCode 513.找树左下角的值 分析1.0 二叉树的 最底层 最左边 节点的值,层序遍历获取最后一层首个节点值,记录每一层的首个节点,当没有下一层时,返回这个节点 class Solutio ...
- OpenLayers结合Turf实现空间运算
1. 引言 空间运算利用几何函数来接收输入的空间数据,对其进行分析,然后生成输出数据,输出数据为针对输入数据执行分析的派生结果. 可从空间运算中获得的派生数据包括: 作为输入要素周围缓冲区的面 作为对 ...
- ABP微服务学习系列-修复System.Text.Json不支持序列化Exception
前面我们已经把服务都启动了,然后我们试试请求API.发现请求出现500 返回错误 System.NotSupportedException: Serialization and deserializa ...
- python ( 进阶 第一部 )
目录 列表的相关操作与函数 字符串的相关操作与函数 集合相关操作与函数 字典相关操作与函数 深浅拷贝 文件操作 列表的相关操作 列表的拼接 lst1 = [1,2,3] lst2 = [4,5,6,6 ...
- C语言学习--动态内存分配(未完待续)
内存分配的类型: 在C/C++中内存分为5个区,分别为栈区.堆区.全局/静态存储区.常量存储区.代码区. 静态内存分配:编译时分配.包括:全局.静态全局.静态局部三种变量. 动态内存分配:运行时分配. ...