新建数组 + 数组的索引 与长度

  • 数组主要用于封装/管理 多个任意类型的数据
  • 数组是值的有序集合,由于弱类型的原因,js在同一个数组中可以存放多种类型的元素,且长度可以动态调整;

总结

  1. new Array(5) 中5是数组长度(一个参数); new Array(5,6)中 5,6 是数组内容(多个参数)
  2. 索引都是属性名,但只有自然数 才是索引, 负数,非数字“索引”会变成数组的属性,数组的属性不会影响数组的长度
  3. 索引没必要连续,数组length = 最大的下标index+1
  4. 设置length < 下标index 时, 会删除多余下标对应的数组项
  5. 设置length > 下标index 时, 只在尾部追加空空间,不添加数组项

1. 新建数组

1.1 字面量

var arr = [];    //创建空数组
var arr1 = [10];   // 创建数组 [10] --  字面量方式,无论传入几个参数,都会把参数当作初始化内容
//最好最后不要带多余的”,”,不同浏览器下处理不同,现代浏览器上运行长度是3,但低版本IE下却是长度为4的数组,最后一条数据是undefined

1.2 构造函数

在使用构造函数创建数组时

  • 传入一个数字参数,则会创建一个长度为参数的数组
  • 如果传入多个,则创建一个数组,参数作为初始化数据加到数组中
var arr = new Array();   //[]无参构造函数,创建一空数组
var arr1 = new Array(5);  //[,,,,] 一个数字参数构造函数,创建指定长度为5的数组 
// console.log(arr1.length); -- 5         console.log(arr1);  -- [] ,数组是空的
var arr2 = new Array(4,'hello',new Date());  //带有初始化数据的构造函数,创建数组并初始化参数数据
// console.log(arr2.length); -- 3;   console.log(arr2); -- [4,'hello',XXX]

2. 数组的索引 与 长度

  • 数组的值可以通过 索引 进行读写操作 , 索引/下标 可以是一个得出非负整数的 变量或表达式
var a1=[1,2,3,4];
console.log(a1[0]); //1 --- 数组的值可以通过 自然数索引 进行读写操作,
var i=1;
console.log(a1[i]); //2 --- 索引/下标 可以是一个得出非负整数的 变量或表达式
console.log(a1[++i]); //3 --- 索引是表达式
  • 数组也是对象,可以使用索引的奥秘在于:数组会把索引值转换为对应字符串(1=>”1”)作为对象属性名
console.log(1 in a1);//true,确实是一个属性
  • 索引特殊性在于数组会自动更新length属性
  • 负数,甚至非数字”索引“都是允许的,只不过这些会变成数组的属性,而不是索引
  • 所有的索引都是属性名,但只有自然数(有最大值)才是索引,一般我们在使用数组的时候不会出现数组越界错误也正是因为此
  • 数组的索引可以不是连续的,访问index不存在的元素的时候返回undefined
  • 因为js语法规定数字不能作为变量名,所以我们不能显示使用array.1这样的格式。
var a=new Array(1,2,3);

a[-10]="a[-10]";
a["sss"]="sss";

在这里插入图片描述

  • 数组length属性等于数组中最大的下标index+1
var a=new Array(1,2,3);

a[100]=100;
console.log(a.length); //101  -- 数组length属性等于数组中最大的下标index+1
console.log(a[3],a[99]); //undefined undefined  -- 虽然直接对a[100]赋值不会影响a[4]或a[99]

在这里插入图片描述

  • 当强制把数组的length属性值设置为小于等于最大index值时,数组会自动删除indexd大于等于length的数据
var a=new Array(1,2,3,4,5);
a.length=2
console.log(a);    //[1,2]

在这里插入图片描述

  • 如果把length设置为大于最大index+1的值的时候,数组也会自动扩张,但是不会为数组添加新元素,只是在尾部追加空空间
var a=new Array(1,2);
a.length=5;   //数组会自动扩张,但是不会为数组添加新元素,只是在尾部追加空空间
           
console.log(a); //[1,2] //后面没有3个undefined

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值