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

    一 简介 1.了解Docker的前生LXC LXC为Linux Container的简写.一种轻量级的内核虚拟化技术,隔离进程和资源. Linux Container有点像chroot,提供了一个拥有 ...

  2. Dapr 不是服务网格,只是我长的和他很像

    概述 我们快速看一遍官方文档:https://docs.dapr.io/concepts/service-mesh/#how-dapr-and-service-meshes-compare ,看看 D ...

  3. uniapp复制到剪贴板

    uni.setClipboardData() ; 例: 给元素添加点击事件 <view @click="doCopy()">复制</view> 复制方法 d ...

  4. nodejs + typescript + koa + eslint + typescript eslint + prettier + webstorm

    ESLint 安装 yarn add -D eslint 生成配置文件 yarn eslint --init cli 选项 How would you like to use ESLint? To c ...

  5. 零基础学Java第四节(字符串相关类)

    本篇文章是<零基础学Java>专栏的第四篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! String 本文章首发于公众号[编程攻略] 在Java中,我们经 ...

  6. 其实 Gradle Transform 就是个纸老虎 —— Gradle 系列(4)

    前言 目前,使用 AGP Transform API 进行字节码插桩已经非常普遍了,例如 Booster.神策等框架中都有 Transform 的影子.Transform 听起来很高大上,其本质就是一 ...

  7. 696. Count Binary Substrings - LeetCode

    Question 696. Count Binary Substrings Example1 Input: "00110011" Output: 6 Explanation: Th ...

  8. linux篇-linux下ffmpeg安装

    1最近自己搭建的公司服务端转化视频不可以,我想应该是ffmpeg的问题,头痛 准备这两个源码包 2安装,先解压 ffmpeg-4.1.4.tar.bz2 yasm-1.3.0.tar.gz 3先安装y ...

  9. 以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle

    学习内容:以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle 代码示例: import java.util.Scanner; class Point{ private ...

  10. 【Unity Shader学习笔记】Unity光照基础-半兰伯特光照

    在光照无法达到的区域,模型的外观通常是全黑的,没有任何明暗变化,这会使模型的背光区域看起来就像一个平面. 使用半兰伯特光照可以解决这个问题. 逐顶点光照技术也被称为兰伯特光照模型.因为它符合兰伯特定律 ...