(五).JavaScript的数组
1. 数组
1.1 数组的基础
数组:同种或不同数据类型数据的有序集合
功能:同时存储多个数据
数据:常量 变量 表达式 数组 函数 对象
定义方式:字面量定义或者构造函数定义
字面量定义数组(本质上也是使用new Array()创建数组)
// 1. 定义了一个空的数组
var arr1 = []; // 2. 定义一个数组,数组中有一个数据
var arr2 = [1];
var arr3 = ['dog']; // 3. 定义一个数组,数组中有多个数据
var arr4 = [1, true, '我的世界'];
/* 结果
Array(3)
0: 1
1: true
2: "我的世界"
length: 3
[[Prototype]]: Array(0)
*/
构造函数定义数组
// 1. 定义了一个空数组
var arr1 = new Array(); // 2. 定义了一个数组,数组中有一个元素
var arr2 = new Array('world'); // 3. 定义了一个数组,数组中有多个元素
var arr3 = new Array('我的世界', 1, 2, true, 1);
/*
Array(5)
0: "我的世界"
1: 1
2: 2
3: true
4: 1
length: 5
[[Prototype]]: Array(0)
*/ // 4. ☆☆☆☆☆☆定义了一个数组,数组长度是5
// 5个值为undefined
var arr4 = new Array(5);
/*
Array(5)
length: 5
[[Prototype]]: Array(0)
*/
1.2 数组的索引和长度
xxx.yyy:对象.属性
xxx[yyy]:xxx是对象 xxx[yyy]是对象的属性
xxx.yyy():对象.函数()
长度(数组对象名.length)
// 1. 查 访问数组长度
arr.length() // 2. 删 通过数组长度删除元素
arr.length = 2; // 3. 增 (☆☆☆推荐☆☆☆)通过数组长度增加元素
// 原理:数组的最大索引值 = 数组长度 - 1
arr[arr.length] = '我是索引为4的元素';
索引(数组对象名[索引])
// 索引:通过索引操作数组中的指定数据
// 数组有序体现在,下标从0开始
var arr = ['dog', true, 1, 'happy']; // 语法:数组对象名[索引]
// 1. 查 拿到索引为1的元素
console.log(arr[1]); // 2. 改 修改索引为1的元素值为false
arr[1] = false;
console.log(arr[1]); // 3. 增 通过索引增加元素 '我爱中华'
// 增加或删除元素时,数组长度自动变化
arr[4] = '我爱中华';
console.log(arr); // 4. 增 特殊情况
// 当在指定位置添加元素,中间空下的索引位置元素为 undefined
arr[8] = '我是第九个元素';
console.log(arr);
// (9) ['dog', false, 1, 'happy', '我爱中华', 空属性 × 3, '我是第九个元素']
// 其实可以理解数组就是无限长的,除了用户自定义的其他位置都是undefined
1.3 数组的遍历
// 数组遍历
var arr = [1, 2, 3, 4];
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
1.4 数组的案例
数组求和
var arr = [11, 22, 33, 44, 55];
var sum = 0;
for (var index = 0; index < arr.length; index++) {
sum += arr[index];
}
console.log(sum);
求数组的最大值,最小值,平均值
var arr = [11, 22, 33, 44, 55];
var max = arr[0];
var min = arr[0];
var sum = arr[0];
for (var index = 1; index < arr.length; index++) {
if (arr[index] < min) {
min = arr[index];
} if (arr[index] > max) {
max = arr[index];
} sum += arr[index];
}
console.log('最大值:' + max);
console.log('最小值:' + min);
console.log('平均值:' + sum / arr.length);
合并数组
var arr = [11, 22, 33, 44, 55];
var arr1 = ['aa', 'bb', 'cc', 'dd', 'ee'];
for (var index = 0; index < arr1.length; index++) {
// 这里利用数组的长度来实现添加元素
arr[arr.length] = arr1[index];
}
console.log(arr);
反转数组
// 方法1 翻转原先数组本身
var arr = [11, 22, 33, 44, 55];
var temp = 0;
for (var index = 0; index < arr1.length / 2; index++) {
temp = arr[index];
arr[index] = arr[(arr.length - 1) - index];
arr[(arr.length - 1) - index] = temp;
}
console.log(arr); // 方法2 倒序遍历,赋值到新数组
var arr = [11, 22, 33, 44, 55];
var newArr = [];
for (var i = arr.length - 1; i >= 0; i--) {
newArr[newArr.length] = arr[i];
}
console.log(newArr);
数组去重
// 新旧数组 标志位 的思路
var arr = [11, 22, 11, 44, 22, 55, 66, 11];
var newArr = [];
var flag = true;
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < newArr.length; j++) {
if (arr[i] == newArr[j]) {
flag = false;
break;
}
}
// 添加元素到新数组
if (flag) {
newArr[newArr.length] = arr[i];
}
// 重置flag
flag = true;
}
console.log(newArr);
冒泡排序
// 冒泡排序 var arr = [47, 65, 12, 78, 3]
var arr = [47, 65, 12, 78, 3];
var temp = 0;
// 轮次
for (var i = 0; i < arr.length - 1; i++) {
// 比较次数
for (var j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
// console.log(arr);
}
console.log(arr);
1.5 多维数组
定义:一个数组中某个数组又是一个数组
示例:
// 二维数组
var arr = [
[1, 2],
['happy', '我的世界']
]; console.log(arr[0][0]); //1 // 三维数组
var arr = [
[[1, 2], [3, 4]],
[['happy', '我的世界'], ['sad', '我的世界']]
];
console.log(arr[1][0][1]); //1
(五).JavaScript的数组的更多相关文章
- JavaScript中数组操作常用方法
JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...
- javascript中数组Array的方法
一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...
- javascript中数组的常用算法深入分析
Array数组是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array是前端必修的功课.本文将给大家详细介绍了javascri ...
- 总结Javascript中数组各种去重的方法
相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...
- JavaScript对数组的处理(一)
数组创建 JavaScript中创建数组有两种方式,第一种是使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组 var arr2 = new Array( ...
- JavaScript的数组系列
数组 今天逆战班的学习主题关于Javascript的数组,主要有数组的概念.创建.分类.方法.遍历.经典算法...... 一.数组是什么呢?怎么写数组呢?数组有多少种呢? 数组的概念 对象是属性的无序 ...
- JavaScript中数组去重的几种方法
JavaScript中数组去重的几种方法 正常情况下,数据去重的工作一般都是由后端同事来完成的,但是前端也要掌握好处理数据的能力,万一去重的工作交给我们大前端处理,我们也不能怂呀.现在我总结了一些去重 ...
- JavaScript Array数组方法详解
Array类型是ECMAScript中最常用的引用类型.ECMAScript中的数据与其它大多数语言中的数组有着相当大的区别.虽然ECMAScript中的数据与其它语言中的数组一样都是数据的有序列表, ...
- JavaScript从数组中删除指定值元素的方法
本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...
- javascript常用数组算法总结
1.数组去重 方法1: JavaScript //利用数组的indexOf方法 function unique (arr) { var result = []; for (var i = 0; i & ...
随机推荐
- 图片上传造成VS关闭
原来的地方:https://q.cnblogs.com/q/129719/ VS2019开启调试,测试图片上传的时候,一点到图片上传,直接导致VS调试崩掉,返回 程序"[14764] iis ...
- 多线程学习(第二天)Java内存模型
一.内存模型基础 Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明. 如果编写多线程程序的Java程序员不理解隐式进行的线程之间通信的工作机制,很可 ...
- TCP 粘包/拆包的原因及解决方法?
TCP是以流的方式来处理数据,一个完整的数据包可能会被TCP拆分成多个包进行发送,也可能把多个小的包封装成一个大的数据包.由于TCP数据包之间没有边界保护,所以当发生粘包或拆包时,接收端难以从数据流中 ...
- RxJava简要分析
一:RxJava执行流程: RxJava简单使用 private final String tag = getClass().getSimpleName(); //数据源,被观察对象 Observab ...
- C/C++/中宏特殊字符的含义及用法总结(“#”、“##”、"#@"、“\”等等)
在C/C++中,宏定义是由define完成的,宏定义中有几种常见的特殊字符需要我们了解,常用的特殊字符有以下几种: #:在宏展开的时候会将#后面的参数替换成字符串: 字符串化##:将前后两个的单词拼接 ...
- windows2020 更换sid
cmd whoami /user 查看sid的值 点击运行sysprep程序.记得在"通用"前面打上勾 点击运行sysprep程序.记得在"通用"前面打上勾
- P1982 [NOIP2013 普及组] 小朋友的数字 题解
目录 简单版 题目 code 本题 code 简单版 先要会做这道题 题目 P1115 最大子段和https://www.luogu.com.cn/problem/P1115 这道题其实是动态规划,d ...
- vue保持滚动条在底部
mounted() { this.scrollToBottom(); }, updated: function () { this.scrollToBottom(); }, scrollToBotto ...
- elementUi - 页面设计规范
elementUi - 页面设计规范 参考资料 element 字体 Font-family 代码 font-family: "Helvetica Neue",Helvetica, ...
- 044_Schedule Job 间隔时间自动执行
需求:系统上的标准功能是能够设置间隔一天的执行,或者是写完代码着急测试我们写个5分钟后执行的: 但是遇到要求没间隔一小时或者十分钟执行,该怎么处理呢? global class **_Retrieve ...