红宝书阅读笔记!第三天_集合引用类型Array

174 阅读4分钟

Object

创建对象
let IronMan = new object();
IronMan.name = 'Tony';
IronMan.age = 53;

let IronMan = {
    name:'Tony',
    age:53
}

let IronMan = {};
IronMan.name = 'Tony';
IronMan.age = 29;

更多见面向对象编程。

Array

1.创建数组

let superhero = new Array()

let superhero = new Array('IronMan','SpiderMan')

数组字面量:

let superhero = ['IronMan','SpiderMan']

let superhero = []

静态方法:

Array.from():第一个参数是类数组对象,*第二个关键字映射函数参数

console.log(Array.from('Tony'))		//['T','o','n','y']

Array.of():把参数转化为数组

2.数组空位

const options = [1,,,4]

长度为4,空位为存在的元素,值为undefinded

3.数组索引

let number = [1,2,3,4,5];
alert (number[0]);			//1
number[1] = 6;				//[1,6,3,4,5]
number[5] = 7;				//[1,6,3,4,5,7]
number.length == 6;			// true
number[number.length] = 8;		//[1,6,3,4,5,7,8]

length属性不是只读属性,可以通过改变array.length的值来增加或者删除数组的长度,若增加若干长度,为声明的部分用undefinded填充。

4.检测数组:Array.isArray()

5.迭代器方法

返回数组索引:keys=() 返回数组元素:values() 返回索引/值对:entries()

const Superhero = ['IronMan','SpiderMan','Hulk']
for(const [idx,element] of Superhero.entries()){
	alert(idx);
	alert(element);
}

6.复制和填充方法

fill() copyWithin()

ps:给了我一个华为P40ProPlus,我却只能用它打电话,等以后哪天我用它上网了我一定回来补上

7.转换方法

toString() toLocalString() valueOf

可以用join()来改变数组转换过程中的分隔符。比如join('|'),,就变成|了。

8.栈

push() pop()

9.队列

shift() push() unshift()

10.排序

反向排序:reverse()

升序排序:sort()不过如果使用默认这个办法就有点笨,所以sort()因为努力学习他可以接收比较函数了。

function compare(num1,num2){
	if(num1 < num2){
    	return -1;
        }
    else if(num1 > num2){
    	return 1;
        }
    else{
    	return 0;
        }
}

let values = [0,1,5,10,15];
values.sort(compare);
alert(values);		//bingo

如果把±1交换的话,sort()就可以实现倒序排序,比较函数还可以写成一个比较简单的箭头函数:

values.sort((a,b) => a<b ? 1 : a>b ? -1 :0);		//这个是降序排列,升序就改变±

11.操作方法

concat()在一个数组后拼接,默认js可以想尽办法帮你直接整合成一个数组,当然如果你就是不想,可以这样👇

let moreNewColors = {
    [Symbol.isConcatSpreadable]:true,
    length:2,
    0:'pink',
    1:'cyan'
};
moreNewColors[Symbol.isConcatSpreadable]:false;

这样再把👆按照数组传入就好了。

splice(x,y):在原来的数组中复制x-y一段到新的数组中。当然了你也可以传入负数

❗❗❗splice()红宝书说这个最强大了所以我给他打了惊叹号

🎈删除:给splice()传入两个参数:要删除的第一个元素的位置,和要删除的元素的数量。

🎈插入:给splice()传入三个参数:开始位置、0(要删除的元素数量)和要插入的元素。你可以这样splice(2,0,'red','green')如果你会更多颜色的英语就可以加入更多

🎈替换:一样给splice()传入三个参数:开始位置、1(把你要替换的那个或者那几个先🔪掉)和你要替换的元素。比如splice(2,1,'red','blue')把第二个元素换成红色和蓝色,没想到吧我英语也不戳

12.搜索和位置方法

严格相等:indexOf() lastIndexOf() includes()

断言函数:find() findIndex()

没咋看懂这两个的区别

13迭代方法

every():对数组的每一项都运行传入的函数,如果每一项都是true,那么就返回true

filter():对数组的每一项都运行传入的函数,把返回true的项组成数组返回

forEach():对数组每一项都运行函数,没有返回值

map():对数组每一项都运行传入函数,返回有每次函数调用的结果构成的数组

some():对数组的每一项都运行传入的函数,如果有一项是true,那么就返回true

14.归并方法

看起来有点点像递归,但是也没有特别懂

reduce()

reduceRight()

别看我写了两行,只不过是遍历数组的方向不一样而已。

都会接受四个参数:上一个归并值,当前项,当前项的索引和数组本身

let nalues = [1,2,3,4,5];
let sum = values.reduce((prev,cur,index,array) =>prev + cur);
alert(sum);		//15
文章内容参考:JavaScript高级程序设计(第四版)

标题样式来自:juejin.cn/post/684490…

哪里写错了就联系我🐧:54269504