第一百一十二篇: JS数组Array(一)数组基本用法
好家伙,
1.数组
Array应该就是ECMAScript中最常用的类型了。ECMAScript数组跟其他编程语言的数组有很大区别。
跟其他语言中的数组一样,ECMAScript 数组也是一组有序的数据,
但跟其他语言不同的是,数组中每个槽位可以存储任意类型的数据。
这意味着可以创建一个数组,它的第一个元素是字符串,第二个元素是数值,第三个是对象。
ECMAScript数组也是动态大小的,会随着数据添加而自动增长。
2.创建数组
有几种基本的方式可以创建数组。第一种是使用Array 构造函数,第二种是使用数组字面量
2.1.使用Array 构造函数创建数组
可以直接使用new字符创建,可以传参,也可以直接传入要保存的数
let Array_1 = new Array();
//创建length为20的数组
let Array_2 = new Array(20);
Array_3 = new Array("red","blue", "green"); console.log(Array_1,Array_2,Array_3);

2.2.使用数组字面量创建数组
let Array_1 = []; let Array_2 = [1,2,]; Array_3 = ["red","blue", "green"]; console.log(Array_1,Array_2,Array_3);

此处Array_2仍然是空数组
2.3.Array构造函数好友两个ES6新增的用于创建数组的静态方法:from()和of().
from()用于将类数组结构转换为数组实例,
而of()用于将一组参数转换为数组实例
console.log(Array.from("Array"));
console.log(Array.of(1,2,3,4,5));

3.数组空位
使用数组字面量初始化数组时,可以使用一串逗号来创建空位(hole)。
ECMcript会将逗号之相应索引位置的值当成空位,ES6规范重新定义了该如何处理这些空位。
const options = [1, , , , 5];
for (const option of options) {
console.log(option === undefined);
}

4.数组索引
跟大部分语言相同,JS的数组索引也是从"0"开始算起的
let colors = ["red", "blue", "green"]; //定义一个字符串数组
console.log(colors[0]);
//显示第一项
colors[2] = "black";
//修改第三项
colors[3] = "brown";
//添加第四项
console.log(colors);

有意思的是,我们可以使用length属性不停的向数组末尾添加元素
let colors = ["red", "blue", "green"]; //定义一个字符串数组
for (let i = 2; i <= 10; i++) {
colors[colors.length] = "nocolors";
}
console.log(colors);

(实用小技巧+1)
5.数组检测
一个经典的ECMAScript问题是判断一个对象是不是数组。
在只有一个网页(因而只有一个全局作用域)的情况下,使用instanceof 操作符就足矣:
使用instanceof的问题是假定只有一个全局执行上下文。
如果网页里有多个框架,则可能涉及两个不同的全局执行上下文,因此就会有两个不同版本的Array 构造函数。
如果要把数组从一个框架传给另一个框架,则这个数组的构造函数将有别于在第二个框架内本地创建的数组。
为解决这个问题,ECMAScript提供了Array.isArray()方法.这个方法的目的就是确定一个值是否为数组,
而不用管它是在哪个全局执行上下文中创建的
let colors = ["red", "blue", "green"]; //定义一个字符串数组
console.log(Array.isArray(colors))

6.迭代器方法
在ES6中,Array的原型上暴露了3个用于检索数组内容的方法:keys(),values()和entries()。
方法一: keys()返回数组索引的迭代器,
方法二: values()返回数组元素的选代器,
方法三: entries()返回索引/值对的迭代器:
let colors = ["red", "blue", "green"]; //定义一个字符串数组 let colorskeys= Array.from(colors.keys());
let colorsvalues =Array.from(colors.values());
let colorsentries= Array.from(colors.entries()); console.log(colorskeys);
console.log(colorsvalues);
console.log(colorsentries);

(好用直观)
第一百一十二篇: JS数组Array(一)数组基本用法的更多相关文章
- 第一百一十四篇: JS数组Array(三)数组常用方法
好家伙,本篇为<JS高级程序设计>第六章"集合引用类型"学习笔记 1.数组的复制和填充 批量复制方法 copyWithin(),以及填充数组方法fill(). 这两 ...
- “全栈2019”Java第一百一十二章:什么是闭包?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 【leetcode 简单】 第一百一十二题 重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: 输入: "abab" 输出: True 解释 ...
- Python开发【第二十二篇】:Web框架之Django【进阶】
Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...
- 第十二篇 Integration Services:高级日志记录
本篇文章是Integration Services系列的第十二篇,详细内容请参考原文. 简介在前一篇文章我们配置了SSIS内置日志记录,演示了简单和高级日志配置,保存并查看日志配置,生成自定义日志消息 ...
- 【译】第十二篇 Integration Services:高级日志记录
本篇文章是Integration Services系列的第十二篇,详细内容请参考原文. 简介在前一篇文章我们配置了SSIS内置日志记录,演示了简单和高级日志配置,保存并查看日志配置,生成自定义日志消息 ...
- 跟我学SpringCloud | 第十二篇:Spring Cloud Gateway初探
SpringCloud系列教程 | 第十二篇:Spring Cloud Gateway初探 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如 ...
- Spring Cloud第十二篇 | 消息总线Bus
本文是Spring Cloud专栏的第十二篇文章,了解前十一篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring ...
- 解剖SQLSERVER 第十二篇 OrcaMDF 行压缩支持(译)
解剖SQLSERVER 第十二篇 OrcaMDF 行压缩支持(译) http://improve.dk/orcamdf-row-compression-support/ 在这两个月的断断续续的开发 ...
- 第十二篇 SQL Server代理多服务器管理
本篇文章是SQL Server代理系列的第十二篇,详细内容请参考原文 在这一系列的上一篇,我们查看了维护计划,一个维护计划可能会创建多个作业,多个计划.你还简单地看了SSIS子系统,并查看了维护计划作 ...
随机推荐
- [转贴]使用dbstart 和dbshut 脚本来自动化启动和关闭数据库
使用dbstart 和dbshut 脚本来自动化启动和关闭数据库 https://www.cnblogs.com/snowers/p/3285281.htmldbshut 和 dbstart 使用db ...
- 文心一言 VS 讯飞星火 VS chatgpt (187)-- 算法导论14.1 4题
四.用go语言,写出一个递归过程 OS-KEY-RANK(T,k),以一棵顺序统计树T和一个关键字k作为输入,要求返回 k 在由 T 表示的动态集合中的秩.假设 T 的所有关键字都不相同. 文心一言, ...
- 在K8S中各个组件及其作用?
Kubernetes(简称K8s)是一个强大的容器编排系统,其主要组件及其作用如下: kube-apiserver: 集群的主入口点,提供了RESTful API接口供用户或内部组件与集群进行交互.它 ...
- 从零开始配置 vim(12)——主题配置
在我们进一步增强vim的功能之前,我们先为vim准备一个漂亮的主题,毕竟对着一个丑陋原始的界面多少有点提不起劲来进行编程.长时间对着丑陋的界面多多少少会产生抑郁情绪的.下面推荐几款我觉得还不错的主题插 ...
- Java多线程-ThreadLocal(六)
为了提高CPU的利用率,工程师们创造了多线程.但是线程们说:要有光!(为了减少线程创建(T1启动)和销毁(T3切换)的时间),于是工程师们又接着创造了线程池ThreadPool.就这样就可以了吗?-- ...
- Vulkan学习苦旅04:创建设备(逻辑设备VkDevice)
设备是对物理设备的一种抽象,使我们更加方便地使用它.更准确地说,应该称其为"逻辑设备",但由于逻辑设备在Vulkan中极为常用,后面几乎所有的API都需要它作为第一个参数,因此在V ...
- 关于ASP.NET WEB API(OWIN WEBAPI)的几个编码最佳实践总结
近期工作比较忙,确实没太多精力与时间写博文,博文写得少,但并不代表没有研究与总结,也不会停止我继续分享的节奏,最多有可能发博文间隔时间稍长一点.废话不多说,直接上干货,虽不是主流的ASP.NET CO ...
- 开源免费绘制小工具drawio推荐
最近给客户做架构评估写报告时,需要画一些架构示例简图,需求很简单,没到非要用付费软件的程度. 同事推荐一款开源免费的绘制软件drawio,实际体验不错,可以满足我的使用需求. drawio官方网站: ...
- 小知识:MAC上使用预览功能来减小PDF大小
工作中有些流程会用到PDF电子扫描件,当身边没有扫描设备时,通常会用手机拍照然后合成PDF. 有一个问题是:合成的PDF文件很大,甚至远大于照片本身大小.比如照片是4M的,合成的PDF文件就基本要30 ...
- Python numpy数组操作(分割数组)
分割数组 函数 数组及操作 split 将一个数组分割为多个子数组 hsplit 将一个数组水平分割为多个子数组(按列) vsplit 将一个数组垂直分割为多个子数组(按行) numpy.split ...