JS 数组定义及详解

2023-11-18

一、数组简介

1.什么是数组:

数组是值的有序集合。每个值叫做元素,每个元素在数组中都有数字位置编号,也就是索引。
JS中的数组是弱类型的,数组中可以含有不同类型的元素。数组元素甚至可以是对象或其他数组。

例如:
var arr = [1,true,null,undefined,{x:1},[1,2]];
2.数组定义:
总结了四种方式:
	1. var arr = new Array()  //new 可以省略
	2 .var arr = new Array(item,item,item...);   //定义时即初始化
	3. var arr = new Array(length)    //定义指定长度的数组
	4. var arr = []    //最常用

补充:
var arr1 = [1,,2];   // 1,undefined,2
var arr2 = [,,];   // undefined*2   (第二个逗号右边部分会被忽略掉,存在兼容性问题,不推荐使用)
var arr3 = new Array(100);  // undefined*100  (表示创建一个数组,数组有100个空元素,长度为100)
3.类型判断
数组名  instanceof  Array
Array.isArray([])
[].constructor === Array
Object.prototype.toString.apply([]) === '[object Array]'

以上四种方法都可用来判断是否为数组
返回值  true   表示是数组
 	   false  表示不是数组
4.数组赋值
数组中每一个元素都有一个索引,从0开始
数组名[索引]=值;
5.数组取值
数组名[索引]
6.数组删除
1.通过delete删除
	var arr = [1,2,3,4,5];
	delete arr[0];  //删除第一个元素
	console.log(arr[0]);  //undefined

注意: 删除后数组长度不变,即 length = 5
2.通过length删除
	arr.length -=1;
	console.log(arr);  //[1,2,3,4];  元素5被删除

注意: 删除后数组长度变,即 length = 4
7.数组长度

数组元素增删是动态的,所以数组长度无需指定大小

length from 0 to 4294967295(2^23-1)
例如:
var arr8 = new Array(4294967295);  //
var arr9 = new Array(4294967296);  //报错(范围错误)  Uncaught RangeError: Invalid array length
8.数组迭代(即遍历)
1.for
	for(var i=0; i<arr.length; i++){
		 遍历内容
	}
2.for...in  //不保证顺序
	for(var i in arr){
		遍历内容
	}
3.forEach
	arr.forEach(function(item,index,arr){
		遍历内容 
	});
	forEach可以传3个参数		item	元素
							index  	索引
							arr		数组本身
9.数组特点(两个不限制 )
数组定义时无需指定数据类型 (不限制类型),数组可以存储任何数据类型的数据
数组定义时无需指定数组长度 (不限制长度)
10.补充
引用类型赋值,传递的是地址
基本类型变量赋值,传递的是值

二、多维数组

1.多维数组定义:
var arr = [['李四',20],['王五',23],['莉莉',19],['小花',21]]    
2.多维数组赋值
数组名[索引][索引]=值;
例如:为arr添加一个学生 ‘小明’,20岁
arr[4][0]='小明';
arr[4][1]=20;
3.多维数组取值
数组名[索引][索引]
4.数组对象
var arr0 = [];
arr0['张三'] = 20;
arr0['李四'] = 10;
arr0['格式'] = 16;
arr0['王师'] = 19;
console.log(arr0);  // Array(0)  张三:20,李四:10,格式:16,王师:19   

注意: length = 0
补充: for...in 专门为对象数组设计,可以遍历数组对象
for(var i in arr0){
	console.log(i,arr0[i]);
}

三、稀疏数组

1.概念:稀疏数组并不含有从0开始的连续索引。一般length属性值比实际元素个数大。
2.判断
var arr1 = [undefined];  //存在元素,名为undefined
var arr2 = new Array(1);  //长度为1,但不存在元素
0 in arr1;  //true
0 in arr2;  //false

var arr3 = [,,];
0 in arr3;  //false

四、数组和字符串的区别

1.共同点:
1.都可以遍历
2.都有length
3.都可通过索引取值          str[索引]  arr[索引]
4.有相似的方法
2.不同点:
1.遍历:
	数组:for  for...in  forEach
	字符串:for
2.字符串不能修改,数组可以修改
3.数组赋值赋的是地址,字符串赋的是值
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS 数组定义及详解 的相关文章

随机推荐

  • Xilinx ISE系列教程(9):LabTools下载、安装、使用教程(独立的下载工具)

    文章目录 1 ISE Vivado LabTools简介 2 ISE 14 7 Lab Tools下载 安装 3 Vivado 2018 3 LabTools下载 安装 1 ISE Vivado LabTools简介 Xilinx LabT
  • #ifndef... #define与#pragma once总结

    前几天看到同一个项目中有的地方使用了 ifndef define endif 而有的地方却用了 pragma once 于是我就纠结了 这两者有神马区别呢 今天仔细查了一下 发现还是有一点点的区别 不过不大 简单记录一下 一 简介 ifnd
  • lineageos 编译出错:error: VNDK version 30 not found.

    同步源代码后开始编译 结果一开始就提示这个错误 los17 1和los19 1都正常 los18 1就不行 提取了vndk 30后又会提示新的错误 该怎么解决
  • WSL2 Ubuntu+gnome图形界面的安装血泪史(亲测有效)

    WSL2 Ubuntu gnome图形界面 写在最前面 血泪史 1 wsl2 安装 2 Ubuntu安装 3 VcXsrv安装与启动 4 gnome图形界面的配置 5 显卡驱动的升级 6 wsl2与VMware虚拟机共存 本地与WSL文件传
  • docker常用的Linux命令

    docker 帮助 docker h 查看镜像 docker images 查看容器 docker ps 进入容器 docker exec it web 容器id的前几位或容器名 bin bash 有些地方是bash 具体地方具体定 退出容
  • Cesium教程 (3) 矢量切片mvt-imagery-provider加载

    Cesium教程 3 矢量切片mvt imagery provider加载 目录 0 矢量切片 1 开源项目 2 环境 3 代码 4 进阶 5 TODO 0 矢量切片 WMTS 加载最快 图片格式 样式固定 WMS 加载数量大则慢 但可以点
  • VScode项目中文件后面的A/U/M...是什么意思?

    问题 VScode项目中文件后面的A U M 是什么意思 回答 git 添加过该文件 然后你对这个文件进行了修改 就会文件后标记M M modified 你在本地新建了这个文件 还未提交到 git 上 就会标记文件或没有被合并 你需要完成合
  • rocksd mysql_mysql rocksdb使用报告

    作者 某网盘DBA 转发已经过作者同意 如果有其他问题请及时联系 非经过允许请勿随意转发 尊重版权 感谢 背景 rocksdb是facebook基于google的leveldb二次开发的key value存储引擎 目前 facebook已将
  • cenos 6.4 安装memcached 服务端

    本文查考借鉴 yum 安装memcached 前提 阿里云 EDS 服务器 操作系统 CentOs 6 4 第一步 查询memcached 安装资源包信息 yun search memcached 该指令可以查询yum库中 所包含memca
  • Centos 安装Vsftpd

    1 安装VSFTP 1 root localhost yum y install vsftpd 2 配置vsftpd conf文件 root localhost vi etc vsftpd vsftpd conf 001 002 003 0
  • tkinter绘制组件(12)——表格

    tkinter绘制组件 12 表格 引言 构思 外观 绘制方法 布局 函数结构 绘制表头 绘制表格内容 获取高度和重绘 完整代码函数 效果 测试代码 最终效果 2021 12 12新样式 2022 1 2新样式 2022 7 3新功能 补充
  • 知识图谱实现步骤和用到的方法

    PDF 下载 https download csdn net download nrlovestudy 10938925 参考资料 1 知识图谱入门 一 知识图谱与语义技术概览 https blog csdn net pelhans art
  • 【CSS】background相关属性深入学习

    最近一次需求中对于background相关的一些属性使用较多 总结下 希望提高下次的开发效率 background属性 background color background image background position backgr
  • .NET面试题——第7篇 C#类和对象

    1 什么是类和对象以及关系 对象 一种具有状态 属性 和行为 方法 的编程实体 用于描述现实世界的某个具体事物 类 具用一系列对象共同特征和行为的通用类型 对象和类的关系 类是对象的抽象 而对象是类的具体实例 类是抽象的 不占用内存 而对象
  • go爬虫框架colly的精简讲解

    1 拉取软件包 go get github com gocolly colly 2 创建colly的收集器 colly NewCollector 可以在创建的时候进行配置 c colly NewCollector colly AllowUR
  • Java 断点调试 循环调试

    java断点调试 以eclipse为例 1 基础调试 这里都是一些基础 除了最后一个都十分常用 名称 快捷键 作用 Resume F8 运行至下一断点 Step Into F5 进入方法 Step Over F6 运行完当前语句 User
  • PCL 点云按高程渲染颜色

    目录 一 算法原理 二 代码实现 三 结果展示 四 CloudCompare 五 备注 一 算法原理 首先按照Z轴方向求取所在点云的高程极值 包括高程最大值与最小值 计算高程中值 然后选取渲染的红 绿 蓝三种颜色的值 最后 自上而下 为红绿
  • NBA的字母哥如何拿到2415万美金年薪

    前言 NBA是世界上最成功的体育联盟之一 为了制定合理的运作规范 联盟会与球员工会签署劳资协议 协议里规定了球队的工资帽 一支球队球员工资总额的上限 顶薪 球员薪水的上限 底薪 球员的最低薪水 和其他规范 2011年 经历了停摆事件 联盟和
  • 一张图理清ASP.NET Core启动流程

    1 引言 对于ASP NET Core应用程序来说 我们要记住非常重要的一点是 其本质上是一个独立的控制台应用 它并不是必需在IIS内部托管且并不需要IIS来启动运行 而这正是ASP NET Core跨平台的基石 ASP NET Core应
  • JS 数组定义及详解

    一 数组简介 1 什么是数组 数组是值的有序集合 每个值叫做元素 每个元素在数组中都有数字位置编号 也就是索引 JS中的数组是弱类型的 数组中可以含有不同类型的元素 数组元素甚至可以是对象或其他数组 例如 var arr 1 true nu