JavaScript 数组

JavaScript 数组

JavaScript 数组用于在单一变量中存储多个值。

var score = [90, 80, 100];
什么是数组?

数组是js创建好的对象,数组可以用一个单一的名称存放很多值,并且还可以通过引用索引号来访问这些值,批量管理变量。

创建数组

1、使用数组文本创建 JavaScript 数组。
语法:

var array-name = [item1, item2, ...];

例:

var score = [90, 80, 100];
//空格和折行并不重要,声明可横跨多行
var score = [90, 
			80, 
			100
];

ps: 不要最后一个元素之后写逗号(比如 100,),可能存在跨浏览器兼容性问题。

2、使用 JavaScript 关键词 new
语法:

var array-name = new Array(item1, item2, ..);

例:

var score = new Array(90, 80, 100);

以上两个例子效果完全一样。无需使用 new Array()。
出于简洁、可读性和执行速度的考虑,一般使用第一种方法(数组文本方法)。

访问改变数组元素

通过引用索引号(下标号)来引用某个数组元素。
引用数组名来访问完整数组

var score = new Array(90, 80, 100);
var name = score;

访问 cars 中的首个元素的值:

var name = score[0];

修改 score 中的首个元素:

score[0] = 100;

[0] 是数组中的第一个元素。[1] 是第二个。数组索引从 0 开始。

数组是对象

数组是一种特殊类型的对象。在 JavaScript 中对数组使用 typeof 运算符会返回 “object”。但是,JavaScript 数组最好以数组来描述。数组使用数字来访问其“元素”。

//score[0] 返回 90:
var score = [90, 80, 100];

数组元素可以是对象
JavaScript 变量可以是对象。数组是特殊类型的对象。
正因如此,在相同数组中存放不同类型的变量。
可以在数组保存对象。可以在数组中保存函数。甚至可以在数组中保存数组。有三个不限制:
1)不限制元素中存储的数据类型
2)不限制下标越界:

// 越界取值:不报错,返回undefined
	console.log(arr[3]);//undefined
// 越界赋值:不报错,自动在制定的位置新建元素保存数据
	arr[5] = 100;

3)不限制数组的个数:可以随意在任意位置添加新元素 如果新添加元素后,下标不连续 – 稀疏数组

length 属性

length 属性返回数组的长度(数组元素的数目)。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.length;                       // fruits 的长度是 4

length 属性始终大于最高数组索引(下标)。
固定套路:

// 最后一个元素
console.log(arr1[arr1.length-1]);
// 倒数第二个元素
console.log(arr1[arr1.length-2]);
// 删除最后一个元素
arr1.length--;
// 删除数据末尾n个元素  arr1.length -= n;
存储原理

原始类型: 数据直接保存在变量本地,按值传递 修改新变量,不会影响原变量的值。
引用类型: 数据无法保存在变量的本地,复制额是地址 实际的数组始终只有一个。
结果:多个变量同时引用同一个数组 其中有一个修改了,其他的都会修改

关联数组

很多编程元素支持命名索引的数组。
具有命名索引的数组被称为关联数组(或散列)。
JavaScript 不支持命名索引的数组。
在 JavaScript 中,数组只能使用数字索引。
例:

var person = [];
person[0] = "Bill";
person[1] = "Gates";
person[2] = 62;
var x = person.length;          // person.length 返回 3
var y = person[0];              // person[0] 返回 "Bill"

ps
假如使用命名索引,JavaScript 会把数组重定义为标准对象。
之后,所有数组的方法和属性将产生非正确结果。
例:

var person = [];
person["firstName"] = "Bill";
person["lastName"] = "Gates";
person["age"] = 62;
var x = person.length;         // person.length 将返回 0
var y = person[0];              // person[0] 将返回 undefined

ps 关联数组(键值对数组)的值有意义且下标也是有意义的。查找更加方便的时候使用该类型的数组。

数组和对象的区别

在 JavaScript 中,数组使用数字索引,对象使用命名索引。
数组是特殊类型的对象,具有数字索引。
何时使用数组,何时使用对象?
JavaScript 不支持关联数组
如果希望元素名为字符串(文本)则应该使用对象。
如果希望元素名为数字则应该使用数组。

ps避免 new Array(),没有必要使用 JavaScript 的内建数组构造器 new Array()。使用 [] 取而代之!

[] == [] 返回结果是 false 因为[]是新建一个数组,
两个[]的地址是不同的  == 比较原始值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值