学习笔记(4)Array

1,数组(array)简介

array:存储多个同类型的数据,数组是引用类型。
创建数组:

//1.使用new关键字
let nameList = new Array();
//2,使用[]字面量。
let nameList = [];

数据在array中以索引进行存储,数据在数组中是有序的。可以通过索引访问数组中的数据,索引是从0开始的

let arr = [1,2,3];
console.log(arr[0])  //1

数组也是一种对象。所以数组也有属性,其中length属性表示数组的长度,也就是数组中元素的个数。

let arr = [1,2,3];
console.log(arr.length)   //3

2,数组常用的方法

arr[0]使用索引对数组里面的元素进行读与写。

let arr = [1, 2, 3];
arr[0] = 'a';
console.log(arr[0]); //a

2.1,push方法

push方法:用于向数组的最后追加一个元素。

let arr = [1,2,3];
arr.push(4);
console.log(arr)   //1,2,3,4

2.2,pop

pop:用于删除数组中最后一个元素,返回值是删除的这个元素。

let arr = [1,2,6];
console.log(arr.pop())  //6

数组中的push和pop是一对栈(stack)。栈是一个线性数据结构,只有一个入口同时也是出口,先进后出,后进先出

2.3,unshift

unshift:将一个元素添加到数组的最前端。

var arr = [1,2,6];
arr.unshift('a')
console.log(arr)   //[ "a", 1, 2, 6 ]

2.4,shift

shift:从数组最前端删除一个元素,返回值也是删除的元素。

var arr = [1,2,6];
console.log(arr.shift()) //1

Shift和unshift也是一对栈操作。Push和shift是一对,队列(queue)操作。队列是一种线性的数据结构,先进先出,后进后出

2.5,splice

参数描述
index必需。整数,规定添加/删除元素的位置(元素在数组的下标),使用负数可从数组结尾处规定位置。
howmany必需。要删除的元素数量。如果设置为 0,则不会删除元素。
item1, …, itemX可选。向数组添加新的元素。
var arr1 = ['a','b','c'];
arr1.splice(2,1,99,88);
console.log(arr1)   //[ "a", "b", 99, 88 ]

2.6,reverse

reverse:用于将数组中的元素顺序反转

var arr1 = ['a','b','c'];
arr1.reverse()
console.log(arr1)  //[ "c", "b", "a" ]

2.7,slice

slice:用于数组截取,有2个参数。

参数描述
1参从哪个位置开始截取(包含)。
2参截取到哪个位置(不包含当前位置元素),把截取的内容返回到新数组上,原数组不变。
注意如果不写第二个参数,则截取到最后。如果第二个参数写-n ,则表示截取到倒数第n个。
var arr1 = ['a','b','c','d','e'];
console.log(arr1.slice(1,3))   //[ "b", "c" ]

2.8,indexof

indexof:获取元素第一次在数组中出现的索引,如果不包含则返回-1。

var arr1 = ['a','b','c','d','e'];
console.log(arr1.indexOf('c'))  //2
console.log(arr1.indexOf('w'))  //-1

2.9,join

join:将数组的内容拼接成一个字符串。

let arr1 = ['a','b','c','d','e'];
let str = arr1.join('')
console.log(str)  //abcde

2.10,concat

concat方法:可以把两个数组里的元素拼接成一个新的数组, 返回值: 返回拼接后的新数组。

let arr1 = [1,2,3];
let arr2 = [4,5,6];
let arr = arr1.concat(arr2);
console.log(arr); //arr = [1,2,3,4,5,6];

3,伪数组(类数组)

定义:在js中存在一些特殊的对象,有length属性和数值索引属性,可以像数组一样使用方括号语法访问元素,但它们缺少数组所具有的许多内置方法(如 push、pop 等),这些对象可以统称为伪数组或类数组。

3.1,常见的伪数组

  1. arguments 对象:当函数被调用时,会生成一个 arguments 对象,包含所有传递给函数的参数。
function example() {
    console.log(arguments); // 输出伪数组
    console.log(arguments.length); // 输出参数的数量
    console.log(arguments[0]); // 访问第一个参数
}
example(1, 2, 3); // 输出:[1, 2, 3]
  1. DOM方法返回的集合:例如 document.getElementsByClassName() 和 document.getElementsByTagName()等DOM方法返回的集合,都是伪数组。
let divs = document.getElementsByTagName('div');
console.log(divs); // 输出一个伪数组,包含所有的 div 元素
  1. NodeList 对象:querySelectorAll 返回的也是一种伪数组。
let nodes = document.querySelectorAll('p');
console.log(nodes); // 输出一个 NodeList 伪数组

3.2,伪数组和数组的区别

类型不同:伪数组的类型是 Object,而真正的数组类型是 Array。
缺少数组方法:伪数组不具备数组的内置方法,如 push()、map()、forEach() 等。
可访问性:伪数组可以通过索引访问元素,并拥有 length 属性,但没有原生数组的功能。

3.3,伪数组转换为真正的数组

Array.from

let arr = Array.from(arguments); // arguments 是伪数组

Array.prototype.slice.call()

let arr = Array.prototype.slice.call(arguments);

扩展运算符 (...)

let arr = Array.prototype.slice.call(arguments);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酒鼎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值