IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> ECMAScript - 数组 & Math() 对象 -> 正文阅读

[数据结构与算法]ECMAScript - 数组 & Math() 对象

1、数组

1.1 理解

数组也是对象(对象中特殊的结构)

  • 用于存储数据
  • 数据存储顺序是按顺序进行排列的
  • 存储的数据原则上讲是可以是任意类型;

1.2 创建

构造函数的写法:

  	var colors = new Array('red','blue','green');

字面量: (常用)

  	var colors = ['red', 'blue', 'green'];

1.3 length 属性

数组默认的属性,用于展示当前数组存储数据的长度。

  	数组名.length;

直接增加不存在的下标:

  • 若前方存在空标,则用空值占用;(一般不这样用)

    ?

1.4 下标

  • 数组中每一个元素都对应一个下标,
  • 下标 从 0 开始依次增大。
  • 最后一个元素的下标 = 数组长度(length) - 1;
    ?

1.5 访问数组元素

  	数组[下标];

1.6 修改数组元素

  	数组[下标] = '新值' //原值被覆盖

1.7 数组的方法(数组内置的方法)

1.7.1 push()

array.push(参数1);

  	参数1:输入需要插入的元素
  	向数组的末尾增加新元素。

1.7.2 pop()

array.pop();

  	删除数组末尾的元素。

1.7.4 unshift()

array.unshift(元素);

 	添加元素到数组的头部。

1.7.5 shift()

array.shift();

  	删除数组头部元素。

1.7.6 splice()

array.splice(参数1,参数2,参数3);

  	1、参数1:下标,参数2:删除长度,参数3:新增加元素
  	2、可以在任意位置给数组添加或则删除元素。
  	3、后面两个参数可以不写。

  	//删除任意位置  任意长度
  	colors.splice(1,1); //从下标1开始,删除一个;

  	//新增
  	colors.splice(1, 0, 'pink');    //从1开始,加入元素

  	//替换
  	colors.splice(1, 1, 'red');     //将原有位置的元素删除,并插入新元素

  	//删除后,会导致数组长度变化,此时需要解决该问题。

1.7.7 slice()

array.slice();

  	用于抽取当前数组元素中的一段元素,然后组成一个新的数组。
  	var newColor = color.slice(2);  //从原数组中,下标为2的元素开始往后的所有元素抽取出来组成一个数组,原数组不会被影响。
  	var newColors = color.slice();  //不给参数,相当于是复制原数组
  	var newNumbe = numbe.slice(1, 2)    //从下标 1 开始截取元素,至从左往右开始计算的第 2 个值
  • start: 开始下标,包含;
  • end:结束下标,不包含,如果不给该值,就截取剩下所有的元素。
    ?

1.7.8 sort()

array.sort();
?

  • 对数组元素进行排序。

  • 字母类型数据,默认按首字母排序

  • 数值类型数据,默认按从左往右第一位开始,依次从小到大排序

  • 如果不加入参数的情况,默认按照字母升序,如果元素不是字符串的话,会调用 toString()方法将元素转为字符串
    ?

加参数 语法:

  	array.sort(function(a, b) {
  		return 正负数;
  	})
  • function : 可选,用来指定某种顺序进行排列的函数。
  • a 和 b 分别代表第一个、第二个用于比较的元素。
  • 如果 return 小于 0, 那么 a 排在 b 的前面;
  • 如果 return 等于 0, 那么 a 和 b 的位置保持不变;
  • 如果 return 大于 0, 那么 b 排在前面;
    ?

如果是数字的话,可以通过 a - b 判断大小

  	arr.sort(function(a, b){
  		return a - b;   //升序
  	}) 

  	arr.sort(function(a, b){
  		return b - a;   //降序
  	}) 

1.7.9 concat()

array.concat();

  • 合并两个或则多个数组,并返回新数组。
    ?

1.7.10 join()

array.join(参数);

  • 链接数组所有元素组成一个字符串。 //默认各元素之间通过','链接

?

  	参数为:空字符串,则各元素直接链接;
  	参数为:'=',则以参数链接各个元素;

1.7.11 indexOf()

array.indexOf(参数);

  • 从左往右开始找,到到第一个就停止查找;

  • 返回数组中第一个元素与指定相等的下标,如果找不到该元素,返回 -1.

?

  	colors.indexOf('元素');     //查找到数组中 元素 后,返回元素的下标,若找不到,返回 -1.

1.7.12 lastIndexOf()

array.lastIndexOf();

  • 从左往右开始找,到到第一个就停止查找;
  • 返回数组中第一个元素与指定相等的下标,如果找不到该元素,返回 -1.

?

  	colors.lastIndexOf('元素');     //擦找到数组中 元素 后,返回元素的下标,若找不到,返回 -1.

1.7.13 reverse()

array.reverse();

  • 颠倒数组中元素的排列顺序

?

1.7.14 Set()

Set ()

  • 是 Es6 中的第六个版本,新增加的数据结构,类似数组,但是没有重复元素.

  • Set 函数可以接收一个数组作为参数,用于初始化。

    	var list = new Set();
    
  • list.add(‘a’); //add()添加元素

  • 通过使用 size 获取Set 长度

  • 删除 Set 中的元素:list.delete()删除 Set元素 不是下标;

  • 通过 has 查找 Set 中值,返回布尔值;

  • 通过 Clear 清除 Set 中的所有元素;

?

Set 遍历:

  	// 由于 Set 结构没有键名, keys 和 values 行为一致。(属性和值相同)
           
  	[...new Set(arr)]
           
  	Set.Keys()		-->  返回所有的键名;

  	Set.values()		-->  返回所有的键值;

2、遍历数组(循环)

2.1 for 循环

  	for(var i = 0; i < arr.length; i++){
  		console.log(arr[i])
  	}

2.2 for in 循环

遍历数组:

  	// arr 是数组
  	// i 代表数组的下标

结构:

  	for(var i in arr){
  		console.log(i, arr[i]);
  	}

遍历对象:

  	// 对象.属性名 -- 这种方式属性名不能是变量
  	// 对象['属性名']
  	// i 是属性名
  	for(var i in obj){
  		console.log(i, obj[i]);
  	}

2.3 forEaach

forEaach(function(itme, index, array){})
没有规则,遍历数组

  • itme 数组元素。
  • index: 可选,该元素对应的下标;
  • array: 可选,遍历的数组本身;

2.4 map

map(function(itme, index, array){})
修改

  • 遍历数组,并且根据新的规则返回新数组。
  • itme 数组元素。
  • index: 可选,该元素对应的下标;
  • array: 可选,遍历的数组本身;

?

  	// var newGoods = goods.map(function(item) {
  	//   // toFixed(2) 保留两位小数点
  	//   item.priceFormate = '¥' + (item.price / 100).toFixed(2); // 添加新属性
  	//   return item;
  	// });
  	// console.log(newGoods);

2.5 filter

filter(function(itme, index, array){})
筛选

  • 遍历数组,并且根据规则返回符合条件的元素组成新数组。
  • 如果没有找到符合条件的就返回一个空数组;
  • itme 数组元素。
  • index: 可选,该元素对应的下标;
  • array: 可选,遍历的数组本身;

?

  	// var newGoods = goods.filter(function(item) {
  	//   // return item.price > 600000;
  	//   return item.count > 5;
  	// });

2.6 find

find(function(itme, index, array){})
查找

  • 遍历数组,返回数组中满足条件的第一个值。
  • 如果没有找到符合条件的就返回一个 undefined;
  • itme 数组元素。
  • index: 可选,该元素对应的下标;
  • array: 可选,遍历的数组本身;

?

  	// var newGoods = goods.find(function(item) {
  	//   return item.price > 900000;
  	// });

2.7 every

every(function(itme, index, array){})

  • 遍历数组,如果数组中,每个元素都满足条件,则返回 turen。
  • 如果没有找到符合条件的就返回一个空数组;
  • itme 数组元素。
  • index: 可选,该元素对应的下标;
  • array: 可选,遍历的数组本身;

?

2.8 some

some(function(itme, index, array){})

  • 遍历数组,如果数组中,只要有一个元素满足条件,则返回 turen。
  • 如果没有找到符合条件的就返回一个空数组;
  • itme 数组元素。
  • index: 可选,该元素对应的下标;
  • array: 可选,遍历的数组本身 。

3、排序(冒泡 & 选择)

3.1 冒泡排序

  • 比较相邻的两个元素,比较大小交换位置;

?

  	console.time('冒泡排序:');
  	for(var k = 0; k < arr.length - 1; k++){
  		for(var i = 0; i < arr.length - 1 - k; i++){
  			if(arr[i] > arr[i + 1]){
  				var tem = arr[i];
  				arr[i] = arr[i + 1];
  				arr[i + 1] = tem;
  			}
  		}
  	}

  	console.timeEnd('冒泡排序:');
  	console.log(arr);

3.2 选择排序

  • 在未排序的序列中,找到最小的,放在开始位置;
  • 再从剩余未排序元素中继续寻找较小的元素,然后放在已排序末尾。

?

  	console.time('选择排序: ');
  	for (var n = 0; n < arr.length - 1; n++) {
  		for (var j = n + 1; j < arr.length; j++) {
  			if (arr[n] > arr[j]) {
  				var tem2 = arr[n];
  				arr[n] = arr[j];
  				arr[j] = tem2;
  			}
  		}
  	}

  	console.timeEnd('选择排序: ');
  	console.log(arr);

4、Math() 对象

4.1 概念

  • 是一个内置对象,有很多方法,主要提供了一些常用的数学方法;

4.2 部分API

圆周率:

  • Math.PI (常量都是大写)
    ?

随机数:

  • Math.random() 得到 0 ~ 1 之间的数字

?

在指定范围内任意整数的公式:

  • Math.floor(Math.random() * (max - min + 1) + min)
    ?

四舍五入:

  • Math.round(参数1) 四舍五入
  • Math.floor(参数1) 去掉小数点
  • Math.ceil(参数1) 向上则取整
    ?

绝对值:

  • Math.abs(参数1) 绝对值
    ?

其他:

  • Math.max(参数1,参数2,参数3,…) // 返回最大值
  • Math.min(参数1,参数2,参数3,…) // 返回最大值
  • Math.min(…[数组]) 返回最大值 //使用数组时,使用 … es6 的展开符号
  • math.pow(参数1,参数2) // 参数1 的 参数2 次幂
  • math.log(参数1) // 返回 参数1 的自然对数
    ?

三角函数:

  • Math.sign(x) 返回一个数的符号( + - 0 符号)
  • Math.sin(x) 正弦
  • Math.cos(x) 余弦
  • Math.acos(x) 反余弦
  • Math.asin(x) 反正弦
  • Math.tan(x) 正切
  • Math.atan(x) 反正切

相关文章


在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 14:04:31  更:2021-10-07 14:06:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 11:28:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码