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. 基本命令学习 -(4)链接文件:ln命令

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 在Windows系统中,快捷方式是指向原始文件的一个链接文件,原文件一旦被删除或剪切到其 ...

  2. go-micro集成链路跟踪的方法和中间件原理

    前几天有个同学想了解下如何在go-micro中做链路跟踪,这几天正好看到wrapper这块,wrapper这个东西在某些框架中也称为中间件,里边有个opentracing的插件,正好用来做链路追踪.o ...

  3. 第一个MVC程序

    配置版 添加web的支持! 确定导入了SpringMVC 的依赖! 配置web.xml , 注册DispatcherServlet <?xml version="1.0" e ...

  4. Java学习笔记-基础语法Ⅱ

    成员变量:类中方法外的变量 局部变量:方法中的变量 注意,成员变量有默认初始值,而局部变量需要赋初始值 Java中虽然没有明确规定类必须首字母大写,但为了规范最好大写(因为自己刚刚写的时候就没看清写错 ...

  5. ArrayList常用Api分析及注意事项

    数组(定长,有序的,随机访问).ArrayList是Java在数组的基础上进行衍生出来的Java里的一种数据结构,它在拥有数据的特性之外,增加了可变性 (动态数组). 属性 属性 备注 DEFAULT ...

  6. (数据科学学习手札138)使用sklearnex大幅加速scikit-learn运算

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,scikit-learn作为经 ...

  7. C++ 炼气期之算术运算符

    1. 前言 编写程序时,数据确定后,就需要为数据提供相应的处理逻辑(方案或算法).所谓逻辑有 2 种存在形态: 抽象形态:存在于意识形态,强调思考过程,与具体的编程语言无关. 具体形态:通过代码来实现 ...

  8. 数字图像处理-基于matlab-直方图均匀化,傅立叶变换,图像平滑,图像锐化

    直方图均匀化 任务:用MATLAB或VC或Delphi等实现图像直方图均匀化的算法. clc;clear;close all; % 清除工作台 % path(path,'..\pics'); % 设置 ...

  9. 实现领域驱动设计 - 使用ABP框架 - 通用准则

    在进入细节之前,让我们看看一些总体的 DDD 原则 数据库提供者 / ORM 无关性 领域和应用程序层应该与 ORM / 数据库提供程序 无关.它们应该只依赖于 Repository 接口,而 Rep ...

  10. SAP 实例 5 CFW Events

    REPORT demo_custom_control . * Declarations ***************************************************** CL ...