js基础学习-数组
let arr1 = [ {name: 1} ]
let arr2 = [ {age: 23} ]
let ages = [11, 22, 23]
let newArr = arr1.concat(arr2)
1. concat() 用于连接两个或多个数组, 该方法不会改变现有的数组, 而仅仅会返回被连接数组的一个副本.但是修改newArr[0]的内容时,会改变arr1中对应的值(对象数组时,普通数组不会改变)
2. every() 用于检测数组所有的元素是否都符合指定条件, 如果检测到有一个元素不满足, 则整个表达式返回 false, 且剩余的元素不会再进行检测, 只有所有的元素都满足,才会 返回 true
let result = arr1.every((currentValue, index, arr1) => { return currentValue.name < arr2[0].age }, arr2) //该方法可以接受两个参数
3. filter() 创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
let resultArr = arr1.filter((currentValue, index, arr1) => { return currentValue.name < arr2[0].age }, arr2) // 该方法可以接受两个参数
4. find() 返回符合要求的第一个元素, 找到符合的元素后,就直接返回,后面的不再继续执行,没有找到时,返回 undefined
let matchValue= arr1.find((currentValue, index, arr1) => { return currentValue.name < arr2[0].age }, arr2) //该方法可以接受两个参数
5. findIndex() 返回符合要求的第一个元素的位置,没有找到时返回 -1, 其余与 find() 类似
6. Array.from() 用于通过拥有 length 属性的对象或可迭代的对象来返回一个数组
let newArray = Array.from([1, 2, 3], (x) => x * 10); newArray = [10, 20, 30] // 其中函数是数组中每个元素需要调用的 let newArray = Array.from(new set([1, 2, 2, 1])) // 此方法可以去重
7. includes() 用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false, 对象数组不适用 [NaN].includes(NaN) // true [NaN].indexOf(NaN) // -1
8. Array.isArray(obj) 用来判断一个对象是不是数组
9. map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
let newArray = arr1.map( (currentValue, index, arr) => { return arr2[0].age * currentValue.name }, arr2 ) //该方法可以接受两个参数
10. pop() 删除数组的最后一个元素并返回删除的元素, 此方法改变数组的长度
let deleteItem = arr1.pop()
11. reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
let total = ages.reduce((total, currentValue, index, arr) => {
// total 初始值, 或者计算结束后的返回值。
return total + currentValue // 起始时,total为第一个元素的值(没有传计算的初始值时)
}, 100) // 100为计算的初始值
12. reduceRight() 与reduce()一样, 只是reduceRight()是从右向左递减
13. reverse() 方法用于颠倒数组中元素的顺序
14. shift()方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
15. slice()方法可从已有的数组中返回选定的元素。
let slicedArray = ages.slice(start, end) // start规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。end规定从何处结束选取。
16. some() 方法用于检测数组中的元素是否满足指定条件(函数提供),如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false。
let matchResult= arr1.some((currentValue, index, arr1) => { return currentValue.name < arr2[0].age }, arr2) 该方法可以接受两个参数
17.sort() 方法用于对数组的元素进行排序。默认排序顺序为按字母升序。
let points = [40,100,1,5,25,10]
points.sort(function(a,b){return b-a}); // 数字降序
// 对象数组排序
orderByObjAttr (key) {
return function (val1, val2) {
return val1[key] - val2[key]
}
}
arr1.sort(orderByObjAttr('name')) // arr1数组按照name字段升序排列
18. splice()方法用于添加或删除数组中的元素。如果仅删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。
let deleteArray = ages.splice(2, 1, 12, 12, 23) // 从ages数组的下标为2开始删除一个元素,并添加上12, 12, 23三个元素, deleteArray = [1]
19. toString()方法可以将数组转成字符串,并返回结果
let arrayString = ages.toString()
20. unshift()方法可向数组的开头添加一个或更多元素,并返回新的长度。
21. flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。flat(2)
let arrTwo = [[1, 2, 3], [2, 3, 4]] let arrTwo_new = arrTwo.flat() // [1, 2, 3, 2, 3, 4]
22. flatMap()方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。
[2, 3, 4].flatMap((x) => [x, x * 2]) // [2, 4, 3, 6, 4, 8]
23. copyWithin()在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。
Array.prototype.copyWithin(target, start = 0, end = this.length)
// target(必需):从该位置开始替换数据。如果为负值,表示倒数。start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算。
[1, 2, 3, 4, 5].copyWithin(0, 3) // [4, 5, 3, 4, 5]
24.Array.of()方法用于将一组值,转换为数组。
Array.of(3, 11, 8) // [3,11,8]
25. 扩展运算符
let arr4 = [..arr1, ...arr2]
//与解构赋值结合使用
[a, ...rest] = arr1 // a = arr1[0], rest = arr1.slice(1)
26.indexOf() 方法可返回数组中某个指定的元素位置。该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。如果在数组中没找到指定元素则返回 -1。
let arr = [1, 2, 3, 4, 5]; arr.indexOf(1) // 0
27.lastIndexOf() 方法可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找。
let arr = [1, 2, 3, 4, 5, 1];27.lastIndexOf(1) // 5
js基础学习-数组的更多相关文章
- JS基础学习——对象
JS基础学习--对象 什么是对象 对象object是JS的一种基本数据类型,除此之外还包括的基本数据类型有string.number.boolean.null.undefined.与其他数据类型不同的 ...
- JS基础学习——闭包
JS基础学习--闭包 什么是闭包 闭包的定义如下,它的意思是闭包使得函数可以记住和访问它的词法范围,即使函数是在它声明的词法范围外执行.更简单来讲,函数为了自己能够正确执行,它对自己的词法范围产生闭包 ...
- JS基础学习——作用域
JS基础学习--作用域 什么是作用域 变量的作用域就是变量能被访问到的代码范围,比如在下面的这个js代码中,变量a的作用域就是函数foo,因此在全局作用域内的console.log(a)语句不能访问到 ...
- JS 基础学习随想
2012年就已经接触过了js,给我的印象:这是一门谈不上复杂的语言.大概这就是所谓的学的越浅,用的越少,觉得自己会的东西好像得更多吧!开始做基础练习题的时候觉得好像都十分简单.可是后来在做到对象数组的 ...
- handlebars.js基础学习笔记
最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...
- JS基础学习1
1 JS 概述 一个完整的javascript实现是由以下3个不同部分组成的: (1) 核心(ECMAscript) (2) 文档对象模型(DOM) Document object ...
- 两万字Vue.js基础学习笔记
Vue.js学习笔记 目录 Vue.js学习笔记 ES6语法 1.不一样的变量声明:const和let 2.模板字符串 3.箭头函数(Arrow Functions) 4. 函数的参数默认值 5.Sp ...
- JS基础学习(一)
首先感谢 http://www.w3school.com.cn/js/index.asp 学js真的很方便,&下面的内容其实是我自己做的一个备忘 第一节 大致了解 一 js基本介绍 1.轻量级 ...
- JS基础学习篇(一)
近来一直在学习js和jquery.刚刚进入前端工作还没有多久,虽然大学里学习的是编程自认为也学的还可以,但前端接触的不多,一直认为前端十分简单.其实不然,特别是工作的时候要自己设计一个完整的项目前端, ...
随机推荐
- HTML5 Canvas 超逼真烟花绽放动画
各位前端朋友们,大家好!五一假期即将结束,在开启加班模式之前,我要给大家分享一个超酷超逼真的HTML5 Canvas烟花模拟动画.这次升级版的烟花动画有以下几个特点: 烟花绽放时,将展现不同的色彩,不 ...
- VS Code 真的会一统江湖吗?
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 作者 | ROBEN KLEENE / 策划 | 万佳原文链接:https://blog.ro ...
- go ants源码分析
golang ants 源码分析 结构图 poolwithfunc与pool相差不大,这里我们只分析ants默认pool的流程 文件 作用 ants.go 定义常量.errors显示.默认建一个大小为 ...
- sklearn机器学习-特征提取1
scikit-learn机器学习的特征提取部分较多nlp内容,故学到一半学不下去,看完nltk再来补上 scikit-learn机器学习的特征提取这一章感觉讲的不是特别好,所以会结合着来看 首先是Di ...
- sklearn机器学习实战-KNN
KNN分类 KNN是惰性学习模型,也被称为基于实例的学习模型 简单线性回归是勤奋学习模型,训练阶段耗费计算资源,但是预测阶段代价不高 首先工作是把label的内容进行二值化(如果多分类任务,则考虑On ...
- EF Core 的关联查询
0 前言 本文会列举出 EF Core 关联查询的方法: 在第一.二.三节中,介绍的是 EF Core 的基本能力,在实体中配置好关系,即可使用,且其使用方式,与编程思维吻合,是本文推荐的方式. 第四 ...
- Kafka 生产者解析
一.消息发送 1.1 数据生产流程 数据生产流程图解: Producer创建时,会创建⼀个Sender线程并设置为守护线程 ⽣产消息时,内部其实是异步流程:⽣产的消息先经过拦截器->序列化器-& ...
- 论文解读(GMIM)《Deep Graph Clustering via Mutual Information Maximization and Mixture Model》
论文信息 论文标题:Deep Graph Clustering via Mutual Information Maximization and Mixture Model论文作者:Maedeh Ahm ...
- redis的Linux系统安装与配置、redis的api使用、高级用法之慢查询、pipline事物
今日内容概要 redis 的linux安装和配置 redis 的api使用 高级用法之慢查询 pipline事务 内容详细 1.redis 的linux安装和配置 # redis 版本选择问题 -最新 ...
- [codeforces] 暑期训练之打卡题(一)
每个标题都做了题目原网址的超链接 Day1<Vanya and Lanterns> 题意: 一条长度为 l 的街道,在这条街道上放置了n个相同的灯,街道一端位置记为0,每个灯的位置在ai处 ...