数组定义

有次序和编号的一组值

类似数组对象

函数agruments对象,字符串,DOM元素集

实例属性

Array.prototype.length

length可以赋值,用以改变数组长度

arr.length = 0 //清空数组

实例方法

所有使用的示例中let arr = [1,2,3]

push() pop() 分别在数组尾部添加,删除内容 ,改变原数组

// return array length
let arrLength = arr.push(6,9)
// return remove content
let remove = arr.pop()

shift() unShift() 分别在数组头部删除,添加内容,改变原数组

let remove = arr.shift() // 删除
let arrLength = arr.unshift('a','c',-1) // 添加

slice() 用于截取数组,返回截取到的新数组,也常用于将类似数组对象转换为数组

// none arrgument 返回新数组引用,常用类数组转换
let newArr0 = arr.slcie()
let argArr = Array.prototype.slice.call(arguments)
// one arrgument 从参数位置截取到最后
let newArr1 = arr.slice(1)
// two arrguments 从1参数位置,截取2参数的个数
let newArr2 = arr.slice(1,2)

splice() 截取并添加新元素,改变元素组,返回截取内容

let arr1 = arr.splice(1,2,'a','f')

reverse() 反转数组,改变原数组

arr.reverse()

sort() 默认按字典序排序,也可传函数参自定义排序,改变原数组

arr.sort()

concat() 合并多个数组,返回一新数组

let newArr = arr.concat(['a','g','c'])

join() 数组->字符串

let arrStr = arr.join();
let arrStr = arr.join('-')

indexOf() lastIndexOf() 获取索引

arr.indexOf(2)

valueOf() toString()

arr.valueOf() // [1,2,3]
arr.toSring() // 1,2,3,4

forEach() 无返回,跳过空位[''],不会跳过undefined和null

arr.forEach(function(item){
item += 1;
})

map() 返回新的一数组对象,跳过空位[''],不会跳过undefined和null

let newArr = arr.map( item => item +=1 )

filter() 返回符合条件的新数组对象

let newArr = arr.filter( item => item > 2 )

forEach() , map() , filter() 的异同

同:三个方法都会对数组进行遍历,参数都是一个回调。

异:

  1. forEach() 无返回
  2. map() 返回一个新数组,若对数组进行操作,该数组是原数组操作后的组成的数组
  3. filter() 返回一新数组,返回的是符合条件的数组
var numbers = [1, 2, 3];

numbers.map(function (n) {
return n > 1;
}); // [false,true,true] numbers.filter(function (n) {
return n > 1;
}); // [2,3] numbers.filter(function (n) {
return n + 1;
}); // [1,2,3]

some() 返回布尔值,只要数组有一项符合条件就为true

let isOk = arr.some( item => item > 2)

every() 返回布尔值,全部符合才会true

let isOk = arr.every( item => item > 2)

ES6拓展内容

拓展运算符

拓展运算符,更像是函数res参数的一种逆运算,基本使用是...[数组],不过也可以是表达式,使用后数组就会拓展开来

const a = [1,2,3]
console.log(...[1,23,2]) // 1,23,2
console.log(...a) // 1,2,3 // 可直接用在函数传参上
function foo(a,b,c){
return ''+a + b +c
}
console.log(foo(...[1,2,3])) // 123
foo(...[1,2,3]) 相当于 foo(1,2,3) // 与解构赋值配合
const [first,...others] = [1,2,3,4]
console.log(first) // 1
console.log(others) // 2,3,4
[a,...rest] = others; // a为2,rest为[3,4] // 字符串转数组
const arrStr = [..."string"] //arrStr为["s","t","r","i","n","g"]

静态方法

Array.from() 将类似数组对象转为数组

// ES6
Array.from(doucment.getElementsByTagName('p')) // ES5
[].slice.call(document.getElementsByTagName('p'))

Array.of() es6提供的较为统一的将一组值转换为数组的方法

// Array.of()
// 无参数
Array.of() // []
// 一参数
Array.of(5) // [5]
// 多参数
Array.of(1,2,3) // [1,2,3] // Array()
// 无参数
Array() // []
// 一参数
Array(3) // [,,]
// 多参数
Array(3,2,3) // [3,2,1]

实例方法

find() 返回第一个符合条件的值,参数为回调函数

[1,2,3,4].find((value,index,,arr) => { return value > 2}) // 3

findIndex() 返回第一个符合条件的索引,参数为回调函数

[1,2,3,4].findIndex((value,index,arr) => { return value > 2}) // 2

includes() 返回布尔值表示是否包含指定值,类似String中的

[12,22,3].includes(1) // false

// 可指定第二参数,表示查询的起始位置,0为开始
[12,22,3].includes(12,1) // false

fill() 填充数组,常用于初始化

new Array(6).fill('x')

const arr = ['6',6,1].fill(1)
console.log(arr) // [1,1,1]

copyWithin() 将数组内成员覆盖到其它位置,改变原数组

//copyWithin(target,start,end) 要覆盖的目标位置,起始位置,结束位
let arr = [0,9,8,6];
arr.copyWithin(1,0,2);
console.log(arr) // [0,0,9,6]

flat() 拉平数组,可以把多维数组降维

[1,[2,3],4].flat() // [1,2,3,4]
[1,[2,3,[3.1,3.2]],4].flat() // [1,2,3,[3.1,3.2],4] // 可有参数指定拉平的次数(降的维次)
[1,[2,3,[3.1,3.2]],4].flat(2) // [1,2,3,3.1,3.2,4]

flatMap() 这个相当于将map()flat()的结合

// 将数组进行map,如果map的结果有还有数组就flat
[[2,3],[7,6]].flatMap(([a,b]) => { return a + b }) //[5,13]
[[2,3],[7,6]].flatMap(([a,b]) => { return [a + b,'a'] }) //[5,"a",13,"a"]
[[2,3],[7,6]].flatMap(([a,b]) => { return [a + b,'a',['a-1','a-2']] }) // [5,"a",["a-1","a-2"],13,"a",["a-1","a-2"]]

keys() values() entries() keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

JavaScript数组Array方法介绍,使用示例及ES6拓展的更多相关文章

  1. JavaScript 数组(Array)方法汇总

    数组(Array)常用方法; 数组常用的方法:concat(),every(), filter(), forEach(),  indexOf(), join(), lastIndexOf(), map ...

  2. JavaScript 数组(Array)方法(二)

    forEach ES5新增的方法,Arr.forEach((value, index,array)=>{}); let arr=['a','b','c']; arr.forEach((val,i ...

  3. Javascript数组Array的forEach方法

    Javascript数组Array的forEach扩展方法 forEach是最常用到的数组扩展方法之一,相当于参数化循环数组,它简单的在数组的每一个元素上应用传入的函数,这也意味着只有存在的元素会被访 ...

  4. JavaScript 数组(Array)对象的方法

    JavaScript 数组(Array)对象的方法 concat() 描述:用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 原型:arrayObject.conc ...

  5. JavaScript——数组——slice方法

    JavaScript--数组--slice方法 JavaScript中的slice方法类似于字符串的substring方法,作用是对数组进行截取. slice方法有两个参数,indexStart 和 ...

  6. JavaScript数组归并方法reduce

    示例代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF ...

  7. JavaScript中Array方法总览

    title: JavaScript中Array方法总览 toc: true date: 2018-10-13 12:48:14 push(x) 将x添加到数组最后,可添加多个值,返回数组长度.改变原数 ...

  8. javascript数组原型方法

    1.javascript数组原型方法. <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  9. Optional类包含的方法介绍及其示例

    Optional类的介绍 javadoc中的介绍 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回> 该对象. 使用场景 用于避免 ...

  10. JavaScript中数组Array方法详解

    ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...

随机推荐

  1. 记录--关于前端的音频可视化-Web Audio

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 最近听音乐的时候,看到各种动效,突然好奇这些音频数据是如何获取并展示出来的,于是花了几天功夫去研究相关的内容,这里只是给大家一些代码 ...

  2. c语言的一些类型声明符

    基本类型: char: 字符类型 int: 整数类型 float: 单精度浮点数类型 double: 双精度浮点数类型 void: 无类型 修饰符: short: 短整数类型 long: 长整数类型 ...

  3. 《MySQL技术内幕:InnoDB存储引擎》读书笔记

    SQL语句优化策略 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引. 2.应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,创建 ...

  4. HTTP报文结构

    HTTP报文结构 HTTP报文头 HTTP相应报文 请求方法 状态码

  5. ABA问题的本质及其解决办法

    目录 简介 第一类问题 第二类问题 第一类问题的解决 第二类问题的解决 总结 简介 CAS的全称是compare and swap,它是java同步类的基础,java.util.concurrent中 ...

  6. C++ 多线程编程和同步机制:详解和实例演示

    C++中的多线程编程和同步机制使得程序员可以利用计算机的多核心来提高程序的运行效率和性能.本文将介绍多线程编程和同步机制的基本概念和使用方法. 多线程编程基础 在C++中,使用<thread&g ...

  7. 深入了解图片Base64编码

    title: 深入了解图片Base64编码 date: 2024/4/8 10:03:22 updated: 2024/4/8 10:03:22 tags: Base64编码 图片转换 HTTP请求 ...

  8. c++ 暂停2秒,等待2秒

    std::chrono::milliseconds stopTime(2000); std::this_thread::sleep_for(stopTime);

  9. loguru 简单使用

    使用Python自带的 logging 来记录日志会比较麻烦,查了下 大家都在用 loguru,看了下文档,发现是挺好用的,记录下笔记 安装 pip install loguru     简单使用 f ...

  10. 攻防世界Reverse三星题 zorropub

    题目 分析过程 丢到PE里面,无壳,64bit 丢到IDA里面,查看mian函数 1 int __fastcall main(int a1, char **a2, char **a3) 2 { 3 s ...