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类型相关推荐

  1. javascript——Array类型

    今天这节教程不仅仅是阐述ECMAScript3的部分功能,同时也会阐述有关EXMASctip5的很多新的功能. 一.创建 因为它是一个引用类型,自然就需要在使用前先构造它. 我将分成两种方式来讲述 I ...

  2. javascript Array类型 方法大全

    1,创建数组 1 //第一种是使用Array构造函数 2 var colors = new Array(); 3 var colors = new Array(20); //创建length为20的数 ...

  3. JavaScript面向对象编程——Array类型

    概述 一维数组 数组是一个有序的数据集合,可以通过数组名称和索引进行访问.JavaScript中并没有明确的数组数据类型. 二维数组 数组是可以嵌套的,这就意味着一个数组可以作为一个袁旭被包含在另一个 ...

  4. php 判断类型array,判断一个变量是数组Array类型的方法_javascript技巧

    在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...

  5. JavaScript的类型、值和变量

    计算机程序的运行需要对值进行操作,在编程语言中,能够表示并操作的值得类型称为数据类型.变量用来将值存储起来,变量是值得符号名称. 一.数据类型 JavaScript的数据类型可以分为两类,原生类型和对 ...

  6. cjson 对象是json数组型结构体_C语言 - cJSON解析特定格式 含有数组array类型的数据...

    在ESP32中使用了cJSON库,发现很好用.最近服务器端的JSON格式越来越多样,还是有些注意点,需要做下笔记记录下来. cJSON *MAC_arry = cJSON_GetObjectItem( ...

  7. 详解JavaScript变量类型判断及domReady原理 写得很好

    原文:详解JavaScript变量类型判断及domReady原理 我们知道,在开发JavaScript时候,经常要判断JavaScript变量类型,此 JavaScript教程 详细介绍JS变量的判断 ...

  8. JavaScript Array forEach

    1.  js 数组循环遍历. 数组循环变量,最先想到的就是 for(var i=0;i<count;i++)这样的方式了. 除此之外,也可以使用较简便的forEach 方式 2.  forEac ...

  9. Asp.net AJAX JavaScript 基本类型扩展(7)——String 类型及其扩展

    参考: JScript  语言参考 http://msdn2.microsoft.com/en-us/library/c12461ed-986a-450b-be3d-81a4d808b48b Asp. ...

最新文章

  1. linux下查看文件夹的大小
  2. 为IDOC创建tRFC连接
  3. Hive _偏门常用查询函数(一)附带实例(空字段赋值、 CASE WHEN、行转列)
  4. 修改oracle超空间大小,Oracle修改表空间大小详解
  5. Python版学生管理系统源码分享【考试/作业必备】
  6. VS2017如何创建c语言项目
  7. Windows留后门--教程(四)——Windows启动项后门
  8. 小E开发板wifi音箱二实现网络助手发送整个WAV音乐
  9. Window串口编程
  10. VMware使用OVFTool导出Esxi 6.7.0版本中的虚拟机
  11. 面试圣经——京东之行
  12. Qt开发技术:Qt富文本(三)Qt支持的HTML子集(查询手册)以及涉及的类
  13. macOS开发中用TagLib获取、修改音频文件信息
  14. win10禁用全角_win10系统屏蔽全角/半角快捷键的操作办法
  15. c语言 long与integer,VB中Integer(整型)和Long(长整型)有什么区别?
  16. J2me之一——移动开发技术基础
  17. 百度-视觉技术部招聘计算机视觉相关算法实习生
  18. 如何查看Navicat已保存数据库连接的密码
  19. 在PowerShell中将QuickBooks在线数据导入QuickBooks桌面
  20. 2021年焊工(技师)考试资料及焊工(技师)模拟试题

热门文章

  1. 离线下载,腾讯插入迅雷的利刃
  2. arduino自制cnc绘图仪_如何制作CNC绘图仪
  3. python手写均值滤波锐化_中值滤波,均值滤波,锐化滤波原理
  4. Android使用ViewFlipper实现图片上下自动轮播
  5. Vue 3 与 Vue 2 的区别,相比 Vue 2 有哪些升级、改变之处
  6. 数据分析·影评可视化分析
  7. 抖音4.0热门技术 视频怎么修改dm5值
  8. Android Studio - 北极狐 | 2020.3.1 补丁 3 现已推出
  9. 如何搭建公众号 含举例详情
  10. 记:某次关于均方根与均值的讨论心得