写在前面

小伙伴,大家好,我是迎风望海。以下是我学习web前端、一些笔记心得,分享给大家,喜欢可以多多点赞收藏。带你入门大前端。如有错误欢迎指出。[送心]

1:定义

数组(array)是按次序排序的一组值,每个值都是有编号的、从0开始。

2:本质

数组的本质是一种特殊的对象。

type of arr // object

3: 键名

数组的键名是按次序排列的一组整数

let arr = ['a','b'] console.log(Object.keys(arr)) // [0,1]

1:数组的键名是固定的,不用为每个元素指定键名,默认0,1,2

2:js规定键名一律为字符串,所以数组的键名也是字符串。

3:之所以可以被用数值读取是 arr[1] 这样、是因为非字符串的键名会被转化成字符串。

4:与对象不同的是:对象读取可以用点运算符。数组不行 arr.0 这样写不合法。

4:length属性

1:返回的是数组元素的数量、值等于键名 1

2:就算只有一个元素length的值也不一定是1 而是键名 1

3:如果本来数组有很多元素,可以截断 length = 2.那么这个数组只有两个元素了

4:当修改数组的时候、length属性会自动更新、length是可写的

5:in运算符

检测某个键名是否存在、适用于对象同样适用于数组

let arr = [1,2] 1 in arr // true 2 in arr // false

如果数组的某个元素是空位,返回的也是false

6: 存储为空时

如果数组对应的索引中没有存储数据, 默认存储的就是undefined,

其它编程语言中默认保存的是垃圾数据或者0

7: 存储空间不够时

js中数组存储空间不足的时候会自动扩容。

其他语言数组的大小是固定的

8:可以存储不同类型的数据

js中数组可以存储不同类型的数据、

其他的只可以存储相同类型的,(要么全是字符串、要么全是数值等)。

数组中的元素还是数组,就形成了多维数组。

9: 存储空间不一定连续的

js中的数组分配的存储空间不一定是连续的,如果存储的是相同的数据,会尽量分配连续的

如果是存储的不同的数据类型,就不会分配连续的存储空间。

10: 创建数组的方法有两种

let arr = [1,2,3]; //[1,2,3] let arr1 = new Array(); 不建议使用

不建议使用new Array 去创建数组,因为参数个数的不同,会导致Array()的行为有差异

Array() // [] Array(3) // [, , ,] Array(3, 11, 8) // [3, 11, 8]

可以使用Array.of() ,是为了弥补数组构造函数Array的不足,

web前端笔记6中有介绍用法,请关注后续。

11: 判断是否是数组? Array.isArray

let arr = [1,2,3]; //[1,2,3] console.log(typeof arr) // object console.log(Array.isArray(arr)) // true

12: 数组转成字符串

(1)toString 、 String 、join

var arr = [1,2,3] console.log(arr.toString()) //1,2,3 console.log(String(arr)) // 1,2,3 console.log(arr.join('-')) // 1-2-3

(2)三者的区别

toString 、join 当数据为null、undefined的时候、会报错

let s = null console.log(s.toString()) // 报错 let a = undefined console.log(a.toString()) // 报错 let s = null console.log(s.join('-')) // 报错

(3)toString(2) 括号里可以写一个数字,代表的是进制转化

(4)String 转化null、undefined不会报错

let s = null console.log(String(s)) // null let a = undefined console.log(String(a)) //undefined

总结: join当没有参数,就是调用了toString方法,当传参数的时候,就是分隔符

两者都不能转换 null/undefined会报错。

13:类对象数组

如果一个对象所有的键名都是正整数和零,并且有length属性

看起来很像数组

let obj = { 0:'a', 1:'b', 2:'c', length:3 } obj.push('d') //报错

js数组自带函数(web前端笔记3js数组定义)(1)

上边代码输出的

类对象数组不是真正的数组,所以没有数组上的一些方法。

1:最基本的特征是length

数组的length属性是动态的,但是类对象数组是固定的,不会根据数组成员的变化而变化

2:都有哪些类对象数组 arguments DOM元素集

1:arguments function f() { return arguments } let fun = f('a','b') console.log(fun) console.log(fun[0]) // a console.log(fun instanceof Array) // false 2:DOM元素集 var elts = document.getElementsByTagName('h3'); elts.length // 3 elts instanceof Array // false

最后的最后

下一节分享、js数组中一些常用的方法

,