JavaScript数组Array方法介绍,使用示例及ES6拓展
数组定义
有次序和编号的一组值
类似数组对象
函数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() 的异同
同:三个方法都会对数组进行遍历,参数都是一个回调。
异:
- forEach() 无返回
- map() 返回一个新数组,若对数组进行操作,该数组是原数组操作后的值组成的数组
- 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拓展的更多相关文章
- JavaScript 数组(Array)方法汇总
数组(Array)常用方法; 数组常用的方法:concat(),every(), filter(), forEach(), indexOf(), join(), lastIndexOf(), map ...
- JavaScript 数组(Array)方法(二)
forEach ES5新增的方法,Arr.forEach((value, index,array)=>{}); let arr=['a','b','c']; arr.forEach((val,i ...
- Javascript数组Array的forEach方法
Javascript数组Array的forEach扩展方法 forEach是最常用到的数组扩展方法之一,相当于参数化循环数组,它简单的在数组的每一个元素上应用传入的函数,这也意味着只有存在的元素会被访 ...
- JavaScript 数组(Array)对象的方法
JavaScript 数组(Array)对象的方法 concat() 描述:用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 原型:arrayObject.conc ...
- JavaScript——数组——slice方法
JavaScript--数组--slice方法 JavaScript中的slice方法类似于字符串的substring方法,作用是对数组进行截取. slice方法有两个参数,indexStart 和 ...
- JavaScript数组归并方法reduce
示例代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF ...
- JavaScript中Array方法总览
title: JavaScript中Array方法总览 toc: true date: 2018-10-13 12:48:14 push(x) 将x添加到数组最后,可添加多个值,返回数组长度.改变原数 ...
- javascript数组原型方法
1.javascript数组原型方法. <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- Optional类包含的方法介绍及其示例
Optional类的介绍 javadoc中的介绍 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回> 该对象. 使用场景 用于避免 ...
- JavaScript中数组Array方法详解
ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...
随机推荐
- 没有Python基础,如何学习用Python写机器学习
前言 我是一个完全没用过python的人,所以,想写机器学习,就得从语法入手. 首先上W3cSchool去学习基础语法. 基础语法都差不多,重点看一下函数,模块,面向对象. 函数的写法稍有不同,格式上 ...
- 添加AvalonEdit控件到WinForm
public frmTest() { InitializeComponent(); ElementHost host = new ElementHost(); host.Size = new Size ...
- how to install local jar to maven repository
如何把maven不能引入的依赖安装到本地Repository: 1.比如fastdfs-client-java. <dependency> <groupId>org.csour ...
- [HAOI2007,P2216,BZOJ1047]理想的正方形单调队列解法
题目描述 有一个 \(a \times b\) 的整数组成的矩阵,现请你从中找出一个 \(n \times n\) 的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入格式 第一行为 \( ...
- 三七互娱《斗罗大陆:魂师对决》上线,Network Kit助力玩家即刻畅玩
三七游戏旗下的年度旗舰大作<斗罗大陆:魂师对决>现已开启全平台公测.8月1日,三七互娱技术副总监出席了HMS Core.Sparkle游戏应用创新沙龙,展示了在HMS Core Netwo ...
- HMS Core分析服务智能运营,“智能时机”上线,轻松提升Push点击
对于运营者来说,消息推送一直是提升用户活跃与转化的重要工具,如何在提升转化的情况下,同时不降低用户的接受程度,这一直是运营不断追求的目标. 好的推送不只在于优质的推送内容,还需要把握合适的时机.在合适 ...
- std::thread 五:打包任务(packaged_task)
#include <iostream> #include <thread> #include <mutex> #include <list> #incl ...
- .NET MAUI开源免费的UI工具包 - Uranium
前言 一直有小伙伴在微信公众号后台留言让我分享一下.NET MAUI相关的UI框架,今天大姚分享一个.NET MAUI开源.免费的UI工具包:Uranium. Uranium介绍 Uranium是一个 ...
- 粗心的小红qsnctfwp
将原 apk 安装包后缀名修改为 zip 将其中的 classes3.dex 文件解压 使用 Notepad++ 或其他工具打开 classes3.dex,将第 2 行的 38 修改为 35 或 36 ...
- docker 应用篇————docker原理[三]
前文 前面就已经介绍了docker的安装,在https://www.cnblogs.com/aoximin/p/12906218.html,这里面,这里作为重新整理. 那么这里就不介绍了,这里直接是进 ...