javascript 最全面的数组操作合集
一.数组添加、删除、替换、截取操作
1.arr.unshift(1)
在数组头部添加一个元素 1 (直接改变原数组,返回值为添加元素后数组的length)
2.arr.shift()
在数组的头部删除一个元素 (直接改变原来数组,返回值为删除的元素)
3.arr.push(1)
在数组末尾添加一个元素 1(直接改变原数组,返回值为添加元素后数组的length)
4.arr.pop()
删除数组最后一个元素。(直接改变原数组,返回值为删除的位数 1 )
5.arr.splice(index,number,exchange)
删除或替换元素。(改变原数组,返回值为删除或替换掉的元素组成的数组。index是删除或替换的位置为必填,number是要删除或替换为位数为必填,exchange为要替换的值为选填且可为多个值。)
6.arr.slice(start,end);
截取数组 (不改变原数组,返回值为截取的数组,start开始窃取,到end之前一个元素,注意:end不考虑在截取的范围内)
特殊用法:深度拷贝数组 let a = arr.slice(0);
let arr = [1,2,3,4,5,6];
let a = arr.slice(2); //从index 2位置截取到数组末尾。a为 [3,4,5,6] *注:如果只有start,end默认为0*
a = arr.slice(2,6); 从index 2位置截取到index 6-1 的位置。a为 [3,4,5]
7.arr.concat(arr1,arr2,...);
不改变原来数组值,返回为 多个数组按照顺序组合而成的新的数组,同ES6 中 [...arr,...arr1,...arr2] 效果一致。
特殊用法:深度拷贝数组 let a = arr.concat();
二.数组与字符串的相互转化
1.arr.join('连接符号') ;
数组转换为字符串 (连接符号为空时,默认以 “,” 连接);
2.str.split('分割字符');
字符串转换为数组 (分割字符为空时,默认为‘’ 即每一个字符为一个元素进行截取加入到数组中)
数组中元素的查找
1.arr.indexOf('a');
正序遍历arr,返回arr数组中 第一个遍历到 的 元素 ‘a’ 所在位置,如不存在则返回 -1;
2.arr.lastIndexOf
反序遍历arr,返回arr数组中 第一个遍历到 的 元素 ‘a’ 所在位置,如不存在则返回 -1;
3.arr.includes('a');
如果arr数组中存在 ‘a’ 返回 true,否则返回false;
三.数组常见遍历方式
1.for循环,while循环,do while循环,for of
2.arr.every (返回值:true/false)
对数组中的每一项运行给定函数,如果改函数对每一项返回true,则返回true,否则返回false。
let arr = [2,3,1,4,5,7,6];
let a = arr.every((curr,index) => {
return curr > 3
})
console.log(a); //arr中存在小于3的元素,并不是每一项都返回的ture,打印 false
3.arr.some (返回值:true/false)
对数组中的每一项运行给定函数,如果改函数有一项返回true,则返回true,全部返回false时返回false。
let arr = [2,3,1,4,5,7,6];
let a = arr.every((curr,index) => {
return curr > 3
})
console.log(a); //arr中存在大于3的元素,打印 true。
4.arr.forEach
对数组中每一项运行给定函数,无返回值。作用为逻辑处理。
5.arr.filter
返回一个满足条件的新数组,但新数组必是原数组的一个子集(新数组的所有元素都来源于原数组),filter 意思为筛选,也就是从原数组筛选出满足条件的元素组合形成的新数组。
let target = [1,2,4,6,7,9].filter((curr,index) => {
if(curr <=5 ){
return curr;
}
});
console.log(target); //[1,2,4]
6.arr.map
对数组的每一项运行给定函数,返回每次函数调用的结果(return 返回的值)组成的数组。
let arr = [1,2,3,4,5];
let a = arr.map((curr,index) => {
return curr + 1;
});
console.log(a); // [2,3,4,5,6]
7.arr.reduce
对函数的每一项执行给定函数,返回一个被叠加到累加器的值,reduce执行完毕后 返回这个累加器
let arr = [1,2,3,4,5];
let a = arr.reduce((previous, current, index) => { previous 为累加器,默认为 arr [0] ,从index 为 1开始叠加。
return previous + current;
})
console.log(a); //15
[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4); //reduce运算法则
注意:every 、some、filter、map、forEach 中无法中途终止遍历,这几种方法都会将arr数组的每一个元素进行遍历,并执行运行函数。
四.数组的反叙、排序
1.arr.reverse ();
改变原数组,将arr反序排列。
2.arr.sort();
改变原数组,将arr 递增排列 或 递减排列
let arr = [1,4,2,5,3];
arr.sort((a,b) => {
return a - b; //递增排列
//return b - a; 递减排列
});
console.log(arr); // [1,2,3,4,5]
自定义排序
let friends = [
{name:'zhangsan',sex:'man',age:20},
{name:'lisi',sex:'man',age:29},
{name:'wangwu',sex:'man',age:26}
];
friends.sort((a,b) => {
if(a.age < b.age){
return -1;
}
if(a.age > b.age){
return 1;
}
return 0;
//可简化为 return a.age - b.age; 递增排序
//return b.age - a.age; 递减排序
});
console.log(friends);
五.其它方法
Array.from(arr);
返回一个新的数组。可用于数组的深拷贝,也可以将类数组转化为数组。
function sum () {
let str = Array.from(arguments).join(',');
//或者let str = Array.prototype.join.call( arguments, ',' );
console.log(str);
}
sum(1,2,3,4); // 1,2,3,4
//如果直接使用arguments.join(',') 系统会报错:arguments不是一个数组。实际上arguments为一个类数组,不拥有数组的一些方法。
//我们操作dom节点时候,找到的节点集和也为一个类数组。
//ES6 提供的Set 数据类型为一个类数组,可利用Array.from(set) 将Set类型转化为标准的数组;ps:也可利用Set的无重复性,先将数组转化为Set (new Set(arr)),再利用Array.from() ,实现数组的去重。
new Array(n).fill(0);
新建一个n位数的数组,并用0进行填充。
let a = new Array(3).fill(0);
console.log(a);//[0,0,0]
javascript 最全面的数组操作合集的更多相关文章
- SQL用法操作合集
SQL用法操作合集 一.表的创建 1.创建表 格式: 1 CREATE TABLE 表名 2 (列名 数据类型(宽度)[DEFAULT 表达式][COLUMN CONSTRAINT], 3 ... ...
- JavaScript中常见的数组操作函数及用法
JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...
- JavaScript jQuery 中定义数组操作及数组操作
1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象 Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维 ...
- 【推荐分享】大量JavaScript/jQuery电子书籍教程pdf合集下载
不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小 15天学会jQuery(完整版).pdf 274.79 KB 21天学通JavaScript(第2版)-顾宁燕扫描版.pdf ...
- 42套JavaScript深度解析教学视频!合集
本文首发于:风云社区SCOEE(社区旨在普惠软件.图片.音乐.视频.素材.文档等互联网资源.为大众提供多样化的服务,以及主要涵盖学术科学.电脑技术.文化人文.体育健身等领域的知识和信息,获得用户的支持 ...
- Java文件复制删除操作合集
import java.io.*; public class FileOperate { public FileOperate() { } /** * 新建目录 * @param folderPath ...
- git操作合集
目录 安装 下载 本地配置 创建用户凭证ssh 忽略文件 基础操作 新建仓库 克隆仓库 获取更新 推送更新 查看历史 版本回退 分支 别名 linux服务器 疑难问题 清除历史大文件 安装 下载 下载 ...
- JavaScript常用技巧之数组操作
1.获取最后数组中最后一个元素 . arr.slice(-1).pop() . arr[arr.length - 1] 2.过滤重复元素 arr.filter(function(v, i) { ret ...
- git常用操作合集
基本操作git status 查看文件处于什么状态 git status -s 带上-s参数,可以以更紧凑的格式输出文件状态信息 git add 开始追踪该文件或者暂存已修改的文件. .gitigno ...
随机推荐
- k8s之创建etcd集群
主机规划 maste01——192.168.10.63 master02——192.168.10.64 node01——192.168.10.65 node02——192.168.10.66 1.为保 ...
- JAVA远程调试
1.远程端启动必须添加jvm参数 -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port} 其中de ...
- CO-产地证--需要的国家以及操作流程。
需要产地证的国家一般是与中国有合作的亚非拉国家,比如: 巴基斯坦.智利.以色列.韩国.土耳其.越南.澳大利亚. 流程: 1.在海关官网上填报信息. 2.提交,客户在他国家的官网上确认. 3.确认无误后 ...
- dump、load和dumps、loads的区别
dump: 将dict(字典)转换为str(字符串),并写入json文件中. load: 用于从json文件中读取数据 运行结果: dumps: 将dict(字典)转换为str(字符串). 运行结果: ...
- Eigen子矩阵操作
1 子矩阵操作简介 子矩阵操作又称块操作,在矩阵运算中,子矩阵的提取和操作应用也十分广泛.因此Eigen中也提供了相关操作的方法.提取的子矩阵在操作过程中既可以用作左值也可以用作右值. 2 块操作的一 ...
- 一 分析easyswoole源码(启动服务)
分析easyswoole源码 1以启动为例 //检查是否已经安装 installCheck();//检查锁文件是否存在,不存在结束 //启动服务 serverStart showLogo();//显示 ...
- Java SSM 框架相关基础面试题
一.Spring 面试题 1. Spring 在 SSM 中起什么作用? Spring 是轻量级框架,作用是作为 Bean 工厂,用来管理 Bean 的声明周期和框架集成. Spring 的两大核心: ...
- cpp 区块链模拟示例(六) 交易
交易(transaction)是比特币的核心所在,而区块链的唯一目的,也正是为了能够安全可靠地存储交易.在区块链中,交易一旦被创建,就没有任何人能够再去修改或是删除它.在今天的文章中,我们会实现交易的 ...
- Samba简介与配置(匿名&本地用户验证)
Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. 在此之前我们已经了解了NFS,NFS与samba一样,也是在网络中实现文件共享的一种实 ...
- Canny边缘检测算法的一些改进
传统的Canny边缘检测算法是一种有效而又相对简单的算法,可以得到很好的结果(可以参考上一篇Canny边缘检测算法的实现).但是Canny算法本身也有一些缺陷,可以有改进的地方. 1. Canny边缘 ...