JavaScript -- array类型
array我认为是JavaScript中最常用的类型,最近刚好在看JavaScript红宝书,所以来总结一下相关方法。
创建数组
有两种方法创建数组。
使用array构造函数
let array = new Array();
let array2 = new Array(3); // length = 3
let array3 = new Array("3"); // ["3"] length = 1
let array3 = new Array(1,2,3);[1,2,3]
let array4 = new Array("1","2","3"); //["1","2","3"]
如果只给构造函数传入一个数值,这个数值就会被自动设置为数组的length属性的属性值。
如果给构造函数传入一个其他类型的值,那么就会差创建一个length为1的只包含该值得数组。
使用数组字面量表示法
数组字面量:在中括号中包含以逗号分隔的元素列表。
let codes = ["a","b","c"]; //包含3个元素
let emp = []; // 空数组
let values = [1,2,] // 包含2个元素
ES6新增创建数组方法
from()
from方法用于累数组结构转换为数组实例。
of()
of方法将一组参数转换为数组实例。
迭代器方法
在ES6中,array的原型上暴露了三个用于检索数组内容的方法:keys()、values()、entries()。
- keys()返回数组索引的迭代器;
- values()返回数组元素的迭代器;
- entries()返回索引/值 键值对的迭代器。
迭代器是用于遍历数据结构元素的指针(如数据库中的游标)Iterator 和 for…of 循环
const a = ["foo", "bar", "baz", "qux"];const keys = Array.from(a.keys());const values = Array.from(a.values());const entries = Array.from(a.entries());console.log(keys); // [0, 1, 2, 3]console.log(values); // ['foo', 'bar', 'baz', 'qux']console.log(entries); // [[0,"foo"],[1,"bar"],[2,"baz"],[3,"qux"]]
第三个例子要注意,输出的是一个数组嵌入了数组。(因为每个子数组是键值对)。
使用ES6的解构可以非常容易得在循环中拆分键值对:(利用iterator迭代器)
for (const [index, value] of a.entries()) {console.log(index);console.log(value);}// 0// foo// 1// bar// 2// baz// 3// qux
复制和填充方法(ES6新增)
这两个方法都需要指定数组实例上的一个范围,包括开始索引,但是不包括结束索引。
批量复制方法 – copeWithin()
作用:按照指定范围浅复制数组中的部分内容,然后将他们插入到指定索引开始的位置。
结构:copeWithin(被插入索引,复制开始索引,复制结束索引)
let ints;var reset = function () {ints = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}reset();// 从ints中复制索引0开始的内容,插入到索引5开始的位置ints.copyWithin(5);console.log(ints); // [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]reset();// 从ints中复制索引5开始的内容,插入到索引0开始的位置ints.copyWithin(0, 5);onsole.log(ints); // [5, 6, 7, 8, 9, 5, 6, 7, 8, 9]reset();// 从ints中复制索引0开始到索引3结束的内容(包括索引3对应的值)// 插入到索引4开始的位置ints.copyWithin(4, 0, 3); // [0, 1, 2, 3, 0, 1, 2, 7, 8, 9]console.log(ints);
填充数组方法 – fill()
作用:向数组中插入全部或部分相同的值。
结构:fill(填充值,起始索引,结束索引)
const zeroes = [0, 0, 0, 0, 0];// 用5填充整个数组zeroes.fill(5);console.log(zeroes); // [5, 5, 5, 5, 5]// 用4填充索引大于等于3的元素zeroes.fill(5, 3);console.log(zeroes); // [0, 0, 0, 5, 5]// 用3填充索引大于等于1且小于3的元素(这里一定要注意,不包括结束索引)zeroes.fill(3, 1, 3);console.log(zeroes); // [0, 3, 3, 0, 0]
转换方法
valueOf()
作用:返回数组本身
let people = ["边江", "姜广涛", "吴磊"];console.log(people.valueOf()); // ['边江', '姜广涛', '吴磊']
toString()
作用:数组转换成字符串 alert() 会默认调用toString()方法。
let people = ["边江", "姜广涛", "吴磊"];console.log(people.toString()); // 边江,姜广涛,吴磊
toLocalString()
作用:得到逗号分割的数组值的字符串。
join()
作用:使用指定分隔符返回分隔符分割数组值的字符串。
let people = ["边江", "姜广涛", "吴磊"];
console.log(people.join("||")); // 边江||姜广涛||吴磊
栈方法
栈:一种后进先出(LIFO,Last-In-First-Out)结构。也就是最后添加的项最先被删除。
栈顶:数据项的插入(或称为推入,push)和删除(或称为删除,pop)只在栈顶发生。
push()
作用:接收任意数量的参数,并将他们添加到数组末尾,返回数组长度。(push有返回值)
let names = [];let len = names.push("锦鲤", "李兰陵");console.log(len); // 2console.log(names); // ['锦鲤', '李兰陵']
pop()
作用:删除数组的最后一项,返回被删除的项(pop有返回值)
names = ["锦鲤","李兰陵","胡良伟"];let item = names.pop();console.log(item); // 胡良伟
队列方法
队列:先进先出(FIFO,First-In-First-Out)的结构。
队列在列表末尾添加数据,但从列表开头获取数据。
shift()
作用:删除数组的第一项并返回该项,同时数组长度减1。
let name = ['锦鲤', '李兰陵', "林予曦"];let item = name.shift();console.log(item); // 锦鲤console.log(name); // ['李兰陵', '林予曦']
unshift()
作用:在数组开头添加任意数量的值,同时返回数组长度。
let name = [];len = name.unshift("锦鲤", "李兰陵", "林予曦");console.log(len); // 3console.log(name); // ['锦鲤', '李兰陵', '林予曦']
操作方法
concat()
作用:在以前的数组基础上添加新元素。(类似于连接)
let name = ["歪歪", "谷江山", "苏尚卿"];let names = name.concat("刘琮", ["阿杰", "金弦"]);console.log(names); // ['歪歪', '谷江山', '苏尚卿', '刘琮', '阿杰', '金弦']
slice()
作用:根据参数返回一个原有数组的子数组。
- 如果只有一个参数,则slice()返回该索引到数组末尾的所有元素;
- 如果是两个参数,则slice()会返回从开始us噢因到结束索引对应的所有元素,其中不包含结束索引对应的元素。
let names = ['歪歪', '谷江山', '苏尚卿', '刘琮', '阿杰', '金弦'];let a1 = names.slice(2); // ['苏尚卿', '刘琮', '阿杰', '金弦']let a2 = names.slice(2, 4); // ['苏尚卿', '刘琮']console.log(a1);console.log(a2);
splice()
作用:在数组中插入元素。
- 如果有两个参数,则参数分别对应要删除的第一个元素的位置和要删除的元素数量;
- 如果有三个及以上的参数,开始位置、要删除元素的数量、要插入的元素。
返回被删除的元素组成的数组。
let names = ['歪歪', '谷江山', '苏尚卿', '刘琮', '阿杰', '金弦'];let re1 = names.splice(0, 1);console.log(re1); // ['歪歪']let re2 = names.splice(0, 0, "歪歪");console.log(re2); // []console.log(names);let re3 = names.splice(2, 1, "张思王之", "风袖");console.log(re3); // ["苏尚卿"]console.log(names); // ['歪歪', '谷江山', '张思王之', '风袖', '刘琮', '阿杰', '金弦']
JavaScript -- array类型相关推荐
- javascript——Array类型
今天这节教程不仅仅是阐述ECMAScript3的部分功能,同时也会阐述有关EXMASctip5的很多新的功能. 一.创建 因为它是一个引用类型,自然就需要在使用前先构造它. 我将分成两种方式来讲述 I ...
- javascript Array类型 方法大全
1,创建数组 1 //第一种是使用Array构造函数 2 var colors = new Array(); 3 var colors = new Array(20); //创建length为20的数 ...
- JavaScript面向对象编程——Array类型
概述 一维数组 数组是一个有序的数据集合,可以通过数组名称和索引进行访问.JavaScript中并没有明确的数组数据类型. 二维数组 数组是可以嵌套的,这就意味着一个数组可以作为一个袁旭被包含在另一个 ...
- php 判断类型array,判断一个变量是数组Array类型的方法_javascript技巧
在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...
- JavaScript的类型、值和变量
计算机程序的运行需要对值进行操作,在编程语言中,能够表示并操作的值得类型称为数据类型.变量用来将值存储起来,变量是值得符号名称. 一.数据类型 JavaScript的数据类型可以分为两类,原生类型和对 ...
- cjson 对象是json数组型结构体_C语言 - cJSON解析特定格式 含有数组array类型的数据...
在ESP32中使用了cJSON库,发现很好用.最近服务器端的JSON格式越来越多样,还是有些注意点,需要做下笔记记录下来. cJSON *MAC_arry = cJSON_GetObjectItem( ...
- 详解JavaScript变量类型判断及domReady原理 写得很好
原文:详解JavaScript变量类型判断及domReady原理 我们知道,在开发JavaScript时候,经常要判断JavaScript变量类型,此 JavaScript教程 详细介绍JS变量的判断 ...
- JavaScript Array forEach
1. js 数组循环遍历. 数组循环变量,最先想到的就是 for(var i=0;i<count;i++)这样的方式了. 除此之外,也可以使用较简便的forEach 方式 2. forEac ...
- Asp.net AJAX JavaScript 基本类型扩展(7)——String 类型及其扩展
参考: JScript 语言参考 http://msdn2.microsoft.com/en-us/library/c12461ed-986a-450b-be3d-81a4d808b48b Asp. ...
最新文章
- linux下查看文件夹的大小
- 为IDOC创建tRFC连接
- Hive _偏门常用查询函数(一)附带实例(空字段赋值、 CASE WHEN、行转列)
- 修改oracle超空间大小,Oracle修改表空间大小详解
- Python版学生管理系统源码分享【考试/作业必备】
- VS2017如何创建c语言项目
- Windows留后门--教程(四)——Windows启动项后门
- 小E开发板wifi音箱二实现网络助手发送整个WAV音乐
- Window串口编程
- VMware使用OVFTool导出Esxi 6.7.0版本中的虚拟机
- 面试圣经——京东之行
- Qt开发技术:Qt富文本(三)Qt支持的HTML子集(查询手册)以及涉及的类
- macOS开发中用TagLib获取、修改音频文件信息
- win10禁用全角_win10系统屏蔽全角/半角快捷键的操作办法
- c语言 long与integer,VB中Integer(整型)和Long(长整型)有什么区别?
- J2me之一——移动开发技术基础
- 百度-视觉技术部招聘计算机视觉相关算法实习生
- 如何查看Navicat已保存数据库连接的密码
- 在PowerShell中将QuickBooks在线数据导入QuickBooks桌面
- 2021年焊工(技师)考试资料及焊工(技师)模拟试题
热门文章
- 离线下载,腾讯插入迅雷的利刃
- arduino自制cnc绘图仪_如何制作CNC绘图仪
- python手写均值滤波锐化_中值滤波,均值滤波,锐化滤波原理
- Android使用ViewFlipper实现图片上下自动轮播
- Vue 3 与 Vue 2 的区别,相比 Vue 2 有哪些升级、改变之处
- 数据分析·影评可视化分析
- 抖音4.0热门技术 视频怎么修改dm5值
- Android Studio - 北极狐 | 2020.3.1 补丁 3 现已推出
- 如何搭建公众号 含举例详情
- 记:某次关于均方根与均值的讨论心得