js数组基础知识

三、数组

创建数组

一个标识符可以存储多个数据,并且数据的类型可以不同。

1、字面量
let account1 = ["F72", "123", 2000, false];

中括号里每个数据之间的分隔符为逗号,每个数据成为元素,每个元素都有自己在数组中的唯一索引(下标),我们可以通过索引(下标)来获取数据。下标起始值为0

访问一个不存在的下标输出值为undefined

2、构造函数
let arr = new Array();
3、区别

字面量创建的数组解析速度更快

原因:字面量属于JSON格式,JS引擎可以直接解析;构造函数需要先调用构造函数,再进行JS引擎的解析

数组的遍历

let arr = ["F72", "123", 2000, false];
for(let i=0;i<4;i++){
    console.log(arr[i]);
}

for of 遍历数组中的每个值

for in 遍历数组中的每个下标

ex//for of 遍历数组中的每个值
for(let items of arr){
    console.log(items);
}
//for in 遍历数组中的每个下标
for(let index in arr){
    console.log(index);
}

数组的属性

获取数组的长度(数据个数):数据名.length

数组的方法

1、查找

indexOf();从第一个值开始向后查找,返回第一个与查找内容相等数据的下标,如没找到返回-1;

lastIndexOf();从最后一个值往前查找,返回第一个与查找内容相等数据的下标,如没找到返回-1;

二维数组

let data = [
    ['123', '123', 500], 
    ['456', '456', 1000]
];
console.log(data[0][2]);

返回数组中查找的数据是否存在

.includes()返回true和false

栈、堆

【常量const的扩展】

如果赋值给常量的是基本数据类型,则常量存储该基本数据类型变量具体的

如果赋值给常量的是引用数据类型,则常量存储该引用数据类型变量的地址

注:引用数据类型存储的值发生变化时,常量也会发生变化。

栈:基本数据类型存值,引用数据类型存地址(来自堆);

堆:引用数据类型存值(生成一个地址)

let i=[1,2];
let j=i;
i=[3,4];
console.log(i);//[3,4]
console.log(j);//[1,2]
let i=[1,2];
let j=i;
i[0]=3;
i[1]=4;
console.log(i);//[3,4]
console.log(j);//[3,4]
const a = [1, 2];
a[0] = 2;
console.log(a); //[2,2]

const b=1;
b=2;
console.log(b);//报错
2、新增

数组名.push() 在数组最后添加数据,可以添加多个值,用逗号分隔,返回值是(常用)

数组名.unshift() 在数组的开始添加数据,可以添加多个值,用逗号分隔

3、删除

数组名.pop() 删除数组最后一个数据,在括号里添加内容无效,仍然删除最后一个数据

数组名.shift()删除数组第一个数据,在括号里添加内容无效,仍然删除第一个数据

delete 数组名[下标]; 删除后会留下位置(不常用)

4、截取数据
  • 数组名.slice() 不会改变原数组;返回参数对应的数据;

    一个参数: 获取数组数据的起始下标,返回从起始下标到数组最后一个数据。

    两个参数:参数1:获取数组的起始下标;参数2:获取数组的结束下标。

    功能:返回参数1到参数2的数据。(不包含参数2下标的数据)

    注:

    1、如果出现负值,则数组长度与其相加再进行截取

    2、如果下标的数据不存在,则返回空数组,即[]

    let F72 = ["A", "B", "C", true, false];
    let F73 = F72.slice(1);
    console.log(F72); //["A", "B", "C",true,false];
    console.log(F73); //["B", "C",true,false];
    
    F73 = F72.slice(1, 3);
    console.log(F72); //["A", "B", "C",true,false];
    console.log(F73); //["B", "C"];
    
    F73 = F72.slice(-2, -1);
    console.log(F72); //["A", "B", "C",true,false];
    console.log(F73); //[true]
    
  • 数组名.splice() 会改变原数组,返回参数对应的数据(删除就返回删除的值,修改返回修改后的值,插入返回空数组);

    一个参数:把原数组截掉从该下标开始到最后的所有数据**(删除)**

    两个参数:参数1:起始下标;参数2:截取个数**(删除)**

    n个参数:参数1:起始下标;参数2:截取个数;参数3-n:修改添加的数据**(修改)**

    当参数2为0时,相当于在参数1下标之前插入数据**(插入)**

    **注:**括号里没有满足条件的内容,会返回[]

    //删除
    let F72 = ["A", "B", "C", true, false];
    let F73 = F72.splice(3);
    console.log(F72); //[ 'A', 'B', 'C' ]
    console.log(F73); //[ true, false ]
    //删除
    F72 = ["A", "B", "C", true, false];
    F73 = F72.splice(3, 1);
    console.log(F72); //[ 'A', 'B', 'C', false ]
    console.log(F73); //[ true ]
    //修改
    F72 = ["A", "B", "C", true, false];
    F73 = F72.splice(1, 2, 1);
    console.log(F72); //[ 'A', 1, true, false ]
    console.log(F73); //[ 'B', 'C' ]
    //插入
    F72 = ["A", "B", "C", true, false];
    F73 = F72.splice(1, 0, 1);
    console.log(F72); //["A", 1, "B", "C", true, false];
    console.log(F73); //[]
    
5、转换

字符串转数组:字符串名.split('分隔符')

let str ='123abc';
let arr=str.split('');
console.log(arr);//[ '1', '2', '3', 'a', 'b', 'c' ]

数组转字符串:数组名.join('分隔符')

let arr=[2020,1,2];
let str=arr.join('-');
console.log(str);//2020-1-2
6、拼接

数组1.concat(数组2) 不改变原数组

let arr1=[1,2,3];
let arr2=['a','b','c'];
let arr3=arr2.concat(arr1);//不改变原数组
console.log(arr3);//[ 'a', 'b', 'c', 1, 2, 3 ]
let arr1=[1,2,3];
let arr2=['a','b','c'];
arr2.push(...arr1);//改变原数组
console.log(arr2);//[ 'a', 'b', 'c', 1, 2, 3 ]
数组去重
let arr = [1, 2, 2, 2, 3, 3,4, 3, 5, 5, 3];
for (let i = 0; i < arr.length; i++) {
    if (arr.indexOf(arr[i]) != arr.lastIndexOf(arr[i])) {
        arr.splice(arr.lastIndexOf(arr[i]), 1);
        i--;//返回到当前下标再进行比较,直到没有重复的数据
    }
}
console.log(arr);
快速清空数组
let arr = ["A", "B", "C", true, false];
arr.splice(0);
arr = [];
arr.length = 0;
[补充]运算符
  • 解构运算符

    赋值符号左右的数据类型(括号类型)要一致

    //交换两个变量的值
    let i = 1;
    let j = 2;
    [i, j] = [j, i]
    console.log(i, j); //2,1
    //批量赋值
    let [a,b,c]=[1,'a',3];
    console.log(a,b,c);//1 a 3
    
    let arr = ["A", "B", "C", true, false];
    let [x,y]=arr;
    console.log(x,y);//A B
    
    let arr1=[1,2];
    let [e,f,g,h]=arr1;
    console.log(e,f,g,h);//1 2 undefined undefined
    
  • 扩展运算符(…)

    let str ='123';
    let arr1=['a','b','c'];
    let arr2=[...str];
    console.log(arr2);//[ '1', '2', '3' ]
    console.log(...str);//1 2 3
    console.log(...arr1);//a b c
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值