JS数组

本文详细介绍了JavaScript中的数组,包括数组的概念、创建方式、操作、方法以及与其他数据类型的交互。探讨了数组的遍历、排序算法,如冒泡排序和选择排序,并提供了强化练习和综合应用案例,涵盖了数组的去重、有序插入以及数组相关对象的操作。此外,还涉及到了JavaScript中的堆和栈内存管理,以及对象的创建和遍历。

1.数组的概念及定义

数组:一组任意类型或者相同类型的数据。

除了 Object 类型之外,**Array 类型是ECMAScript 最常用的类型。**而且 ECMAScript 中的 Array 类型和其他语言中的数组有着很大的区别。 虽然数组都是有序排列, 但 ECMAScript中的数组每个元素可以保存任何类型。ECMAScript 中数组的大小也是可以调整的。

2.构造函数的简单介绍了解

构造函数(类)特点:首字母大写,new运算符调用。

类,构造函数:一类事物,抽象的,不占据内存空间。

实例对象:实例化,new构造函数产生实例对象。(具体的,占据内存)

3.数组的创建方式

第一种是 new 运算符(构造函数);

注意:给构造函数传递一个值也可以创建数组。如果传递的是数字,则会按照该数自创建包含 给定项数的数组;而如果传递的是其他类型的参数,则会创建包含那个值的只有一项的数组。

第二种是字面量表示法;

在计算机科学中,字面量是用于表达源代码中一个固定值的表示法。

4.数组的操作

使用索引(index)下标来读取数组的值–下标是固定的,从0开始

数组的length属性 ,代表长度,通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项。

length:静态赋值/动态赋值(动态的,无需指定大小)

数组的遍历for循环–数组索引下标是有序的。

检测数组:Array.isArray() 静态方法(构造函数开头的)

Array.isArray():确定括号中的某个值到底是不是数组

5.数组的方法

push() 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。

pop() 从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

unshift()可以接收任意数量的参数,把它们逐个添加到数组前面,并返回修改后数组的长度

shift() 从数组末尾移除前面一项,减少数组的length值,然后返回移除的项。

reverse() 方法会反转数组项的顺序。

sort() 方法按字母表升序排列数组项。

如果按其他方式而非字母表顺序进行数组排列,必须给sort方法传递一个比较函数做参数。

concat() 方可以基于当前数组中的所有项创建一个新数组,参数可以是数组项或者数组。

slice() 方法它能够基于当前数组中的一或多个项创建一个新数组。可以接受一或两个参数,即要返回项的起始和结束位置,不包括结束位置。

splice() 方法对数组进行删除、插入、替换,是最强大的数组方法,返回值是数组,改变原数组。

join()方法,将数组转换成对应的字符串。参数就是连接符。

6.对象的概念及创建

对象是javascript的数据类型。对象是一种复合值,它将很多值聚合在一起,可通过名字访问这些值。对象也看做是属性的无序集合,每个属性都是一个键/值对。

对象(自定义对象)的两种创建方式

构造函数创建对象 var obj=new Object()

字面量创建对象 var obj={ }

7.数组的类别

整数数组

字符串数组

对象数组

二维数组

8.数组和对象的遍历

for循环只能够遍历数组

for…in循环:可以遍历数组和对象,最好遍历对象。

9.JS堆和栈的了解

引用类型和基础类型的不同(内存方面)

栈:自动分配内存空间,系统自动释放,基本类型的值和引用类型(object)的地址

堆:动态分配的内存,大小不定,也不会自动释放。存放引用类型的值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DsyryhrN-1588755809662)(C:\Users\Administrator\Desktop\第二阶段大纲\img\wps22.jpg)]

值传递和引用传递。

基本类型遵循值传递,引用类型遵循引用传递(地址传递)

数组索引思维

数组元素的索引基本上也是一种属性,而其属性的名称永远都是非负整数。

JavaScript数组有以下三种不同的属性:

1 数组的索引也是其属性–数字索引(属性)

2 内置属性–length

3 你可以自己添加自定义属性(对比for和for…in)

10.数组的排序

1.冒泡排序算法的原理如下:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,在这一点,最后的元素应该会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

2.选择排序原理是:

第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未

排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素

的个数为零。选择排序是不稳定的排序方法。

11.强化练习

  1. 随机生成一个五位以内的数,然后输出该数共有多少位,分别是什么。
  2. 数组的冒泡排序(封装函数)
  3. 数组的选择排序(封装函数)
  4. 编写函数map(arr) 把数组中的每一位数字都增加30%
  5. 编写函数has(arr , 60) 判断数组中是否存在60这个元素,返回布尔类型
  6. 【扩展练习】随机点名程序

12.综合应用

  1. 编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组。
  2. 有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
  3. 定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程。
  4. 通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。试编程。
  5. 使用字面量形式创建一个对象,该对象存储一个学生的信息,该对象包含姓名,学号、身份证、年龄、性别、所学专业等属性信息,同时该对象包含一个自我介绍的方法,用来输出该对象的所有信息.
  6. 扩展案例:以下是某班级一次考试的成绩表。请计算每个学生总成绩,并按总成绩排名。统计各单科成绩第一名,输出其成绩与学号。
学号语文数学英语总成绩备注
110562118
28978120
3866480
4789991
5107.59770
61126192
710179104
87172105
9566861
10988377
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值