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 ...
随机推荐
- 学习日 day1
今天第一天开始写博客,希望以后能坚持,每天写,一是记录自己学习的历程,更重要的是复习每天学过的东西. 今天学习的内容:time模块的相关语法 导入方式 首行输入import time即可 time.t ...
- 深入浅出PF 学习笔记---资源文件
引用 xmlns:sys="clr-namespace:System;assembly=mscorlib" <Window.Resources><sys:St ...
- 项目总结18-使用textarea无法判断空值之坑
项目总结18-使用textarea无法判断空值之坑 今天使用js判断textarea为空,发现怎么都无法成功仔细做了对比测试,发现结果如下: 1-JS代码 if($("#content&qu ...
- java得到当前日期的前一天或后一天
public String getNextDay(String startdate) throws ParseException{ Date date = (new SimpleDateFormat( ...
- ES6 的面向对象
JavaScript 语言中,生成实例对象的传统方法是通过构造函数. function Animal(name, age) { this.name = name; this.age = age; } ...
- sqlserver 更新通过 select 查询出的结果集
update Babies set BirthOrder =tb.sn from Babies b1, (select ROW_NUMBER() over (partition by familyid ...
- Linux驱动之输入子系统简析
输入子系统由驱动层.输入子系统核心.事件处理层三部分组成.一个输入事件,如鼠标移动.键盘按下等通过Driver->Inputcore->Event handler->userspac ...
- CSS实现左侧多级菜单栏
首先看要实现的效果, 主要是关心技术实现, 所以没怎么美化 我也是初学html, 所以写的比较啰嗦 1. 使用列表将内容显示出来 <!DOCTYPE html><html>&l ...
- Subarray Sums Divisible by K LT974
Given an array A of integers, return the number of (contiguous, non-empty) subarrays that have a sum ...
- Pivot For和UNPivot For
一.使用PIVOT和UNPIVOT命令的SQL Server版本要求 1.数据库的最低版本要求为SQL Server 2005 或更高. 2.必须将数据库的兼容级别设置为90 或更高. 3.查看我的数 ...