数组的创建以及常见的方法
目录
创建数组的两种方式
1. 利用数组字面量
2. 利用new Array()
数组访问
数组API
(1)数组序列化
1. toString() 将我们的数组转换为字符串
2. join(分隔符)
(2)构造函数的方法
(3)栈与队列方法
(4)排序方法
(5)操作方法
(6)位置方法
(7)迭代方法
数组去重例子
创建数组的两种方式
1. 利用数组字面量
var arr = [1, 2, 3];var name="name"
2. 利用new Array()
var arr=new Array(); //创建了一个空数组
var arr1 = new Array(1, 2); //等价于[1,2]
数组访问
- [index]直接访问,索引可以超过索引范围,只不过访问的值是undefined。
- length-1=Max(index)。
- length+N或length-N 开辟新的内存空间或数组元素的删除。
数组API
(1)数组序列化
1. toString() 将我们的数组转换为字符串
在默认的情况下会以逗号分隔字符串的形式返回数组项。
var arr = [1, 2, 3];console.log(arr.toString()); //1,2,3
2. join(分隔符)
使用指定的字符串来分隔数组字符串。
var arr1 = ['green', 'blue', 'pink'];
console.log(arr1.join()); //green,blue,pink
console.log(arr1.join('-')); //green-blue-pink
(2)构造函数的方法
1. instanceof 运算符,它可以用来检测是否数组
var arr = [];
var obj = {};
console.log(arr instanceof Array); //true
console.log(obj instanceof Array); //false
2. Array.isArray(参数) H5新增的方法 ie9以上版本支持
console.log(Array.isArray(arr)); //trueconsole.log(Array.isArray(obj)); //false
3. Array.from() 从类数组对象或者可迭代对象中创建一个新的数组实例
var myArr = Array.from("ABCD");
console.log(myArr);
//输出结果为["A","B","C","D"]
4. Array.of() 根据一组参数来创建新的数组实例,支持任意的参数数量和类型
Array.of(7); // [7]
Array.of(1, 2, 3); // [1, 2, 3]
(3)栈与队列方法
1. Array.prototype.push()
push() 在我们数组的末尾添加一个或者多个数组元素,并返回新的长度。
var arr = [1, 2, 3];console.log(arr.push(4, '小')); //5console.log(arr); //[1, 2, 3, 4, '小']
// (1)push 是可以给数组追加新的元素
// (2)push 参数直接写数组元素就可以了
// (3)push完毕之后,返回的结果是新数组的长度
// (4)原数组也会发生变化
2. Array.prototype.unshift()
unshift 在我们数组的开头添加一个或者多个元素,并返回新的长度。
console.log(arr.unshift('red', 'def')); //7
console.log(arr); //['red', 'def', 1, 2, 3, 4, '小']// (1)unshift 是可以给数组前面追加新的元素// (2)unshift() 参数直接写 数组元素就可以了// (3)unshift完毕之后,返回的结果是新数组的长度// (4)原数组也会发生变化
3.Array.prototype.pop()
pop() 它删除数组的最后一个元素并返回删除的元素。
console.log(arr.pop()); //小console.log(arr); //['red', 'def', 1, 2, 3, 4]
// (1)pop 是可以给删除数组最后一个元素,记住只能删除一个元素
// (2)pop() 没有参数
// (3)pop 完毕之后,返回的结果是 删除的那个元素
// (4)原数组也会发生变化
4.Array.prototype.shift()
shift() 它可以删除数组第一个元素,并返回该元素的值。
console.log(arr.shift()); //red
console.log(arr); //['def', 1, 2, 3, 4]
// (1)shift 是可以给删除数组第一个元素 记住只能删除一个元素
// (2)shift() 没有参数
// (3)shift 完毕之后,返回的结果是 删除的那个元素
// (4)原数组也会发生变化
(4)排序方法
1. Array.prototype.reverse()
reverse() 方法用于颠倒数组中元素的顺序。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();
console.log(fruits)
//fruits结果输出:Mango,Apple,Orange,Banana
// 1.翻转数组var arr = ['pink', 'red', 'blue'];arr.reverse();console.log(arr); //['blue', 'red', 'pink']// 2.数组排序(冒泡排序)var arr1 = [13, 4, 77, 1, 7];arr1.sort(function (a, b) {// return a-b; 升序的顺序排列return b - a; //降序的顺序排列})console.log(arr1); //[77, 13, 7, 4, 1]
2.Array.prototype.sort()
sort() 方法用于对数组的元素进行排序。如果调用该方法时没有使用参数,将按字母顺序(Ascall编码)对数组中的元素进行排序。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
console.log(fruits)
//fruits 输出结果:Apple,Banana,Mango,Orange
(5)操作方法
1. Array.prototype.concat()
concat() 方法用于连接两个或多个数组。
var hege = ["A", "B"];
var stale = ["Emil", "Tobias", "Linus"];
var kai = ["Robin"];
var children = hege.concat(stale,kai);
//children 输出结果:A,B,Emil,Tobias,Linus,Robin
2. Array.prototype.slice()
slice() 方法可从已有的数组中返回选定的元素。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1,3);
//citrus 结果输出:Orange,Lemon
3.Array.prototype.splice()
splice() 方法用于添加或删除数组中的元素。
添加元素:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
//从数组索引位置 2 开始,不删除元素,添加两个新的元素"Lemon","Kiwi"
fruits.splice(2,0,"Lemon","Kiwi");
//fruits输出结果:Banana,Orange,Lemon,Kiwi,Apple,Mango
移除元素和添加元素:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,1,"Lemon","Kiwi");//fruits输出结果:Banana,Orange,Lemon,Kiwi,Mango
移除元素:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,2);//fruits输出结果:Banana,Orange
(6)位置方法
1. Array.prototype.indexOf()
- indexOf(数组元素) 作用就是返回该数组元素的索引号,从前面找
- 它只返回第一个满足的索引号
- 它如果在该数组里面找不到元素,则返回的是 -1
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");//a结果输出:2
//以上输出结果意味着 "Apple" 元素位于数组中的第 3 个位置。
2.Array.prototype.lastIndexOf()
从该字符串的后面向前查找。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple");//a输出结果:2
//以上实例输出结果意味着 "Apple" 位于数组中的第 2 个位置.
(7)迭代方法
1. Array.prototype.every()
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。如果满足条件返回true,否则返回false。
注意:every()不会对空数组进行检测,也不会改变原数组。
语法
array.every(function(currentValue,index,arr), thisValue)
参数
参数 | 描述 |
---|---|
function(currentValue, index,arr) | 必须。函数,数组中的每个元素都会执行这个函数 函数参数见下表 |
thisValue | 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。 如果省略了 thisValue ,"this" 的值为 "undefined" |
参数 | 描述 |
---|---|
currentValue | 必须。当前元素的值 |
index | 可选。当前元素的索引值 |
arr | 可选。当前元素属于的数组对象 |
var ages = [32, 33, 16, 40];var result = ages.every(function (age) {return age >= 17
})
console.log(result);//输出结果为:false
2. Array.prototype.some()
some() 方法用于检测数组中的元素是否满足指定条件(函数提供),如果有一个条件为true,则不会再执行检测,否则返回false。
语法
array.some(function(currentValue,index,arr),thisValue)
参数和上面的一样。
var ages = [32, 33, 16, 40];var result = ages.some(function (age) {return age >= 17
})
console.log(result);//输出结果为:true
3.Array.prototype.filter()
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意:fiflter()不会对空数组进行检测,不会改变原来的数组。
语法
array.filter(function(currentValue,index,arr), thisValue)
参数
参数 | 描述 |
---|---|
function(currentValue, index,arr) | 必须。函数,数组中的每个元素都会执行这个函数 函数参数见下表 |
thisValue | 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。 如果省略了 thisValue ,"this" 的值为 "undefined" |
参数 | 描述 |
---|---|
currentValue | 必须。当前元素的值 |
index | 可选。当前元素的索引值 |
arr | 可选。当前元素属于的数组对象 |
var ages = [32, 33, 16, 40];var result = ages.filter(function (age) {return age >= 17
})
console.log(result);//输出结果为:[ 32, 33, 40 ]
4.Array.prototype.map()
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
注意:map() 不会对空数组进行检测,不会改变原始数组。
语法
array.map(function(currentValue,index,arr), thisValue)
参数和上面一样。
//返回一个数组,数组中元素为原始数组的平方根
var numbers = [4, 9, 16, 25];var result = numbers.map(function (number) {return Math.sqrt(number)
})
console.log(result);//输出结果为:[ 2, 3, 4, 5 ]
5.Array.prototype.forEach()
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
注意:forEach()对于空数组是不会执行回调函数的。
语法
array.forEach(function(currentValue, index, arr), thisValue)
参数
参数 | 描述 |
---|---|
function(currentValue, index, arr) | 必需。 数组中每个元素需要调用的函数。 函数参数见下表 |
thisValue | 可选。传递给函数的值一般用 "this" 值。 如果这个参数为空, "undefined" 会传递给 "this" 值 |
参数 | 描述 |
---|---|
currentValue | 必需。当前元素 |
index | 可选。当前元素的索引值。 |
arr | 可选。当前元素所属的数组对象。 |
var numbers = [4, 9, 16, 25];numbers.forEach(function (number, index) {console.log(index + ' -- ' + number);
})
// 0 -- 4
// 1 -- 9
// 2 -- 16
// 3 -- 25
数组去重例子
// 封装一个去重的函数 uniquefunction unique(arr) {var newArr = [];for (var i = 0; i < arr.length; i++) {if (newArr.indexOf(arr[i]) == -1) {newArr.push(arr[i]);}}return newArr;}var demo = unique(['c', 'a', 'd', 'q', 'c', 'a']);console.log(demo); //['c', 'a', 'd', 'q']
数组的创建以及常见的方法相关推荐
- JAVA数组中五种常见排序方法
前言: 几种常用的JAVA数组排序方法的整合. 法一:Arrays.sort() Arrays.sort()排序方法在java中是最简单且最常用的排序方法 int []arr1= {45,34,59, ...
- java数组排序法方法_JAVA数组中五种常见排序方法
前言: 几种常用的JAVA数组排序方法的整合. 法一:Arrays.sort() Arrays.sort()排序方法在java中是最简单且最常用的排序方法 int []arr1= {45,34,59, ...
- 【PHP基础-6】PHP数组的创建、访问及遍历实例解析
目录 1 数组简介 2 一维数组的创建.访问和遍历 2.1 数组的创建 2.2 数组的访问 2.3 数组的遍历 3 多维数组的创建与访问 4 预定义超全局数组变量 5 数组内置函数 6 归纳 参考文章 ...
- html怎么创建数组,js创建数组的三种方法 JS数组去重的几种常见方法
JS数组有哪几种定义方式? js 里创建一个数组 那几种方式有什么区别吗?a = new Array(); b = []; 性能问题吗?? function clear(arr) { // 1 如何获 ...
- Javascript数组常见的方法
分为两种:原型(实例)方法和静态函数 第一类:原型方法: 栈方法(后进先出) push 参数:任意个 作用:将任意数量的参数逐个添加到数组尾部 返回值: 新数组的长度 影响:破坏了原数组 pop 参数 ...
- 学JS的心路历程 -数组常见处理方法
昨天我们有提到说for-of和forEach可以用来处理数组,但其实还有很多方法可以更快速及精简代码的达到你要的效果. 话不多说,我们赶紧来看吧! Array.prototype.map() 会回传一 ...
- Shell中创建序列和数组(list、array)的方法
Shell中创建序列和数组(list.array)的方法 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2015-07-09 我要评论 这篇文章主要介绍了Shell中创建序列和数组(li ...
- 浅谈数组常见遍历方法
本文主要介绍数组常见遍历方法:forEach.map.filter.find.every.some.reduce,它们有个共同点:不会改变原始数组. 接下来都是使用底下的基础数组来实现一些方法: 累加 ...
- 前端:JS/20/数组(数组的概念,数组元素,数组索引,数组元素的访问,数组的长度,数组的创建方法,数组的操作,实例:使用数组保存个人信息,实例:求数组所有值的平均值,数组对象的length属性)
数组 1,数组的概念 一组值(或对象)的集合,称为"数组": var arr =[10,20,30,50]; var arr =["张三","男&qu ...
最新文章
- 2019最新 iOS Native项目集成Unity3D
- 【新产品发布】《EVC8021 RS-232RS-485/422 隔离接口转换器》
- ajax 传递数组参数
- Lesson 8.18.2 单层回归神经网络torch.nn.Linear实现单层回归神经网络的正向传播
- Silverlight Image Source URI 加反斜杠引和不加的区别
- sqlite3_column
- 算法(21)-leetcode-剑指offer5
- 收藏!盘点B站up主们最喜欢用的录屏软件!
- java中json转对象_Java开发中json使用,各对象与json相互转换
- YUV格式简介、YUV444、YUV422、YUV420
- NodeJs安装教程:看教程一步步学会安装NodeJs
- KY-RTI分布仿真技术:第三章 KY-OMT对象模型模板工具
- 隔空开车,华为云EI圆我“武侠梦”
- linux搜索log文件的内容
- 谁拿了奖金?HID2020竞赛、研讨会及颁奖典礼
- VINS-Mono视觉SLAM总体设计框架解读
- linux常用压缩和解压缩命令整理
- 创建表空间(Oracle)
- Glassfish JAVA容器中间件使用(咋个办呢 zgbn)
- 【深度之眼cs231n第七期】笔记(四)
热门文章
- 缓存淘汰策略:LRU、LFU、FIFO 算法原理
- 缓存基础----LRU算法和FIFO算法的Java实现
- 京东CEO徐雷突然退休,CFO许冉接任成为首位女CEO
- android聊天软件大报告,大改变聊天app下载-大改变聊天神器预约 安卓版v1.0-PC6安卓网...
- elementui 手动上传头像
- JVM原理 | 逃逸分析
- 区块链报告会心得体会3000_2019年听讲座心得体会3000字范例汇编三篇
- # 重要-即时通讯IM开源项目OpenIM关于版本管理及v2.3.0发布计划
- 浏览器超好用的调试方法
- rollup.js使用