1. 数组

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)
    */
  2. 构造函数定义数组

        // 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():对象.函数()

  1. 长度(数组对象名.length)

        // 1. 查 访问数组长度
    arr.length() // 2. 删 通过数组长度删除元素
    arr.length = 2; // 3. 增 (☆☆☆推荐☆☆☆)通过数组长度增加元素
    // 原理:数组的最大索引值 = 数组长度 - 1
    arr[arr.length] = '我是索引为4的元素';
  2. 索引(数组对象名[索引])

        // 索引:通过索引操作数组中的指定数据
    // 数组有序体现在,下标从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 数组的案例

  1. 数组求和

        var arr = [11, 22, 33, 44, 55];
    var sum = 0;
    for (var index = 0; index < arr.length; index++) {
    sum += arr[index];
    }
    console.log(sum);
  2. 求数组的最大值,最小值,平均值

        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);
  3. 合并数组

        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);
  4. 反转数组

        // 方法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);
  5. 数组去重

        // 新旧数组 标志位 的思路
    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);
  6. 冒泡排序

        // 冒泡排序 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 多维数组

  1. 定义:一个数组中某个数组又是一个数组

  2. 示例:

        // 二维数组
    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的数组的更多相关文章

  1. JavaScript中数组操作常用方法

    JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...

  2. javascript中数组Array的方法

    一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...

  3. javascript中数组的常用算法深入分析

    Array数组是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array是前端必修的功课.本文将给大家详细介绍了javascri ...

  4. 总结Javascript中数组各种去重的方法

    相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...

  5. JavaScript对数组的处理(一)

    数组创建 JavaScript中创建数组有两种方式,第一种是使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组 var arr2 = new Array( ...

  6. JavaScript的数组系列

    数组 今天逆战班的学习主题关于Javascript的数组,主要有数组的概念.创建.分类.方法.遍历.经典算法...... 一.数组是什么呢?怎么写数组呢?数组有多少种呢? 数组的概念 对象是属性的无序 ...

  7. JavaScript中数组去重的几种方法

    JavaScript中数组去重的几种方法 正常情况下,数据去重的工作一般都是由后端同事来完成的,但是前端也要掌握好处理数据的能力,万一去重的工作交给我们大前端处理,我们也不能怂呀.现在我总结了一些去重 ...

  8. JavaScript Array数组方法详解

    Array类型是ECMAScript中最常用的引用类型.ECMAScript中的数据与其它大多数语言中的数组有着相当大的区别.虽然ECMAScript中的数据与其它语言中的数组一样都是数据的有序列表, ...

  9. JavaScript从数组中删除指定值元素的方法

    本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...

  10. javascript常用数组算法总结

    1.数组去重 方法1: JavaScript //利用数组的indexOf方法 function unique (arr) { var result = []; for (var i = 0; i & ...

随机推荐

  1. 论文笔记:Access Path Selection In A Relational Database Management System

    论文笔记:Access Path Selection In A Relation Database Management System 这篇文章是 1979 年由 IBM 发表的.主要介绍了 Syst ...

  2. Echarts实现不均匀刻度的方法,自定义刻度(转)

    原文地址 今天突然有个我们的咨询公司找我问一个echarts问题,这个问题确实值得一解决,很有意思. 问题是这样的.数据中有很多低于100的数值,但是最高值却能达到14000. data = [93. ...

  3. 4K60帧!RayLink远程控制软件如何帮助设计师远程办公?

    司机在家能远程工作吗?大写的"能"!!!如果你听说过司机远程办公,那你一定对下面这张图不陌生~ (远程办公的叉车司机) 这张图展示的是负责在库房工作的叉车司机在非办公区域远程办公的 ...

  4. OCR开源项目

    转发自https://www.toutiao.com/a6802032805313249806/?tt_from=weixin&utm_campaign=client_share&wx ...

  5. CF1067E 题解

    题意 传送门 给定一棵 \(n\) 个节点的树,每条边有 \(\frac{1}{2}\) 的概率出现,可以得到一个森林,求这个森林邻接矩阵的秩的期望. \(1\le n\le5\times10^5\) ...

  6. less的基本用法

    学习less详细文章链接 https://juejin.cn/post/6844903520441729037#heading-9

  7. 转载:java中DAO层、Service层、Control层的说明

    转自:https://blog.csdn.net/qq_22771739/article/details/82344336?utm_source=blogxgwz6 DAO层:DAO层叫数据访问层,全 ...

  8. 记录一次排查OOM的过程

    服务出现了oom: 查看类信息发现char[]类型实例特别多,占用堆内存特别大 跟踪几个char[]实例的GC root,发现都是保存token信息,并且根都是session 然后查看session的 ...

  9. iOS 制作本地库Development Pods

    1.cd到指定的路径文件夹下 ,创建本地库,如:pod lib create XXNetworking 2.删除Classes文件下的ReplaceMe文件,添加自己的类. 3.修改XXNetwork ...

  10. scala概述入门和项目创建

    1.scala简介 (1).scala基于JVM,与JAVA完全兼容,具有跨平台.可移植性好.方便的垃圾回收等特性: (2).scala比JAVA更加面向对象: (3).scala是一门函数式编程语言 ...