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基础学习-数组的更多相关文章

  1. JS基础学习——对象

    JS基础学习--对象 什么是对象 对象object是JS的一种基本数据类型,除此之外还包括的基本数据类型有string.number.boolean.null.undefined.与其他数据类型不同的 ...

  2. JS基础学习——闭包

    JS基础学习--闭包 什么是闭包 闭包的定义如下,它的意思是闭包使得函数可以记住和访问它的词法范围,即使函数是在它声明的词法范围外执行.更简单来讲,函数为了自己能够正确执行,它对自己的词法范围产生闭包 ...

  3. JS基础学习——作用域

    JS基础学习--作用域 什么是作用域 变量的作用域就是变量能被访问到的代码范围,比如在下面的这个js代码中,变量a的作用域就是函数foo,因此在全局作用域内的console.log(a)语句不能访问到 ...

  4. JS 基础学习随想

    2012年就已经接触过了js,给我的印象:这是一门谈不上复杂的语言.大概这就是所谓的学的越浅,用的越少,觉得自己会的东西好像得更多吧!开始做基础练习题的时候觉得好像都十分简单.可是后来在做到对象数组的 ...

  5. handlebars.js基础学习笔记

    最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...

  6. JS基础学习1

    1 JS 概述 一个完整的javascript实现是由以下3个不同部分组成的: (1)     核心(ECMAscript) (2)     文档对象模型(DOM)  Document object ...

  7. 两万字Vue.js基础学习笔记

    Vue.js学习笔记 目录 Vue.js学习笔记 ES6语法 1.不一样的变量声明:const和let 2.模板字符串 3.箭头函数(Arrow Functions) 4. 函数的参数默认值 5.Sp ...

  8. JS基础学习(一)

    首先感谢 http://www.w3school.com.cn/js/index.asp 学js真的很方便,&下面的内容其实是我自己做的一个备忘 第一节 大致了解 一 js基本介绍 1.轻量级 ...

  9. JS基础学习篇(一)

    近来一直在学习js和jquery.刚刚进入前端工作还没有多久,虽然大学里学习的是编程自认为也学的还可以,但前端接触的不多,一直认为前端十分简单.其实不然,特别是工作的时候要自己设计一个完整的项目前端, ...

随机推荐

  1. 面试题|Docker的优缺点

    开源Linux 长按二维码加关注~ 上一篇:Linux中几个正则表达式的用法 Docker解决的问题: 由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环 ...

  2. 并发编程之volatile与JMM多线程内存模型

    一.通过程序看现象 在开始为大家讲解Java 多线程缓存模型之前,我们先看下面的这一段代码.这段代码的逻辑很简单:主线程启动了两个子线程,一个线程1.一个线程2.线程1先执行,sleep睡眠2秒钟之后 ...

  3. 【算法】插入排序(Insertion Sort)(三)

    插入排序(Insertion Sort) 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相 ...

  4. 关于position的relative和absolute分别是相对于谁进行定位的

    position:absolute; 他的意思是绝对定位,他是参照浏览器的左上角,配合TOP.RIGHT.BOTTOM.LEFT(下面简称TRBL)进行定位,在没有设定TRBL,默认依据父级的做标原始 ...

  5. Lucene开发实例:Lucene中文分词(转载)

    1.准备工作下载lucene 3.6.1 : http://lucene.apache.org/下载中文分词IK Analyzer: http://code.google.com/p/ik-analy ...

  6. 解锁!玩转 HelloGitHub 的新姿势

    本文不会涉及太多技术细节和源码,请放心食用 大家好,我是 HelloGitHub 的老荀,好久不见啊! 我在完成 HelloZooKeeper 系列之后,就很少"露面了".但是我对 ...

  7. 用Arduino玩GM65二维码扫描模块

    目录 用Arduino玩GM65二维码扫描模块 用Arduino玩GM65二维码扫描模块 最近在做Capstone,内容是我们之前实验室参加过的工程训练的物流搬运小车,所以现在来复盘一下我使用Ardu ...

  8. 4. Docker自定义镜像

    下面制作镜像: 此时,验证一下: 以上验证都是成功的,到此就可以把刚才建立并经过刚才运行并验证的镜像包通过各种方式传递给其他人来部署使用了,并且环境肯定是可你统一的.

  9. Typora配置阿里云图床

    一.Typora安装PicGo 更新typora到最新版,打开文件-->偏好设置-->图像-->上传服务选择PicGo-Core-->下载或更新   二.注册并配置阿里云 1. ...

  10. 【生成对抗网络学习 其三】BiGAN论文阅读笔记及其原理理解

    参考资料: 1.https://github.com/dragen1860/TensorFlow-2.x-Tutorials 2.<Adversarial Feature Learning> ...