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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数组--增删改查 -> 正文阅读

[数据结构与算法]数组--增删改查

1. 数组

数组:具有相同类型(或者不同类型)的数据有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引/下标。js的数组是无类型的,数组元素可以是任意类型,同一个数组中的不同元素可能是对象或数组。

2. 创建数组

1.构造函数方式:

var myCars=new Array();
myCars[0]="奥迪"; ? ? ?
myCars[1]="宝马";
myCars[2]="奔驰";

2.简洁方式:

var myCars=new Array("沃尔沃","保时捷","奥拓");?

注意:空数组的长度 var myCars=new Array(3);如果是数字是数组的长度,如果是非数字那么则是一个一个元素。

3.字面量定义方式:常用

?var myCars=["凯迪拉克","宝骏","QQ"];
var myCars=[];空数组

3. 访问数组

通过指定数组名以及索引号码,你可以访问某个特定的元素。

var name=myCars[0];

以下实例修改了数组 myCars 的第一个元素:

myCars[0]="雪佛兰";

4. 遍历数组

?遍历数组:利用循环获取数组中每个元素的值

?var arr = ['周杰伦', '蔡依林', '侯佩岑', '田馥甄','张三'];
for (var i = 0; i < arr.length; i++) {
?? ??? ?console.log(arr[i]);
?? ?}

5. 数组方法和属性

?使用数组对象预定义属性和方法:

var x=myCars.length ? ? ? ? ? ? // myCars 中元素的数量
var y=myCars.indexOf("玛莎拉蒂") ? // "玛莎拉蒂" 值的索引值

6. 数组的增删改查

1.增?

(1)?从数组的尾部添加一个元素

var arr = [0,1,2,3,4,5];
arr[arr.length] = 6;

(2)从数组的头部添加一个元素

?var arr = [1,2,3,4,5];
for(var i = arr.length-1;i>=0;i--){
?? ?//把当前索引中的值复制给下一个索引
?? ?arr[i+1]=arr[i];?? ??? ?
?? ?}
arr[0] = '哈哈';

? ? ? ? ? ? var arr = [1,2,3,4,5];? ? ? ? ? ?

? ? ? ? ? ? // 所有的元素往后移

? ? ? ? ? ? // arr[5] = arr[4];

? ? ? ? ? ? // arr[4] = arr[3];

? ? ? ? ? ? // arr[3] = arr[2];

? ? ? ? ? ? // arr[2] = arr[1];

? ? ? ? ? ? // arr[1] = arr[0];

? ? ? ? ? ? for(var i = arr.length; i >= 1; i--){

? ? ? ? ? ? ? ? arr[i] = arr[i-1];

? ? ? ? ? ? }

? ? ? ? ? ? arr[0] = 0;

? ? ? ? ? ? console.log(arr);?

?(3)从数组的中间(某个索引值的位置)添加一个元素

var arr = [0,1,2,3,4,5];
for(var i = arr.length-1;i>=3;i--){
?? ?//把当前索引中的值复制给下一个索引
?? ?arr[i+1]=arr[i];
?? ?}
arr[3] = '哈哈';

2.删

(1)从数组的尾部删除一个元素

var arr = [0,1,2,3,4,5];
arr.length--;
arr.length -= 1;

(2)从数组的头部删除一个元素

var arr = [0,1,2,3,4,5];
for (var i = 1; i < arr.length; i++) {
?? ?// 把当前索引中的值复制给上一个索引
?? ?arr[i-1] = arr[i];
?? ?}
arr.length--;
console.log(arr);?

(3)?从数组的中间(某个索引值)删除一个元素

?var arr = [0,1,2,3,4,5];
for (var i = 3; i < arr.length; i++) {
?? ?//把当前索引中的值复制给上一个索引
?? ?arr[i-1] = arr[i];
?? ?}
arr.length--;
console.log(arr);

3.改

?var arr = [0,1,2,3,4,5];
arr[0] = 8;
console.log(arr);

4.查

?var arr = [0,1,2,3,4,5];
console.log(arr[0]);
案例:将元素为3的元素修改为300;

对数组进行求和

        <script>
            // 对数组进行求和var arr = [6, 11, 16, 10, 80];
            var arr = [6, 11, 16, 10, 80];

            var sum = 0;

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

            console.log(sum);

        </script>

输出数组中最大的值

        <script>
            var arr = [6,5,3,1,8,7,2,4];

            var max = arr[0];

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

        </script>

输出数组中最小的值

        <script>
            var arr = [6,5,3,1,8,7,2,4];

            var min = arr[0];

            for(var i = 1; i < arr.length; i++){
                if(min > arr[i]){
                    min = arr[i];
                }
            }

            console.log(min);

        </script>

求平均数

        <script>
            var arr = [1,2,3,4,5];

            var sum = 0;

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

            console.log(sum/arr.length);
        </script>

将数组中所有元素和拼接成一个新的字符串

        <script>
            // 将数组中所有元素和|拼接成一个新的字符串

            var arr = ['玉兔精','女儿国国王','蜘蛛精','七仙女'];

            // 玉兔精|女儿国国王|蜘蛛精|七仙女

            var joint = '';

            for(var i = 0; i < arr.length-1; i++){
                joint += arr[i] + '|';
            }

            joint += arr[arr.length-1];
            console.log(joint);
        </script>

反向遍历

        <script>
            var arr = [1,2,3,4,5];

            for(var i = arr.length - 1; i >=0; i--){
                console.log(arr[i]);
            }
        </script>

动态在尾部添加元素

        <script>
            var arr = [];

            // 不知道前面有多少数据然后我要添加
            arr[arr.length] = 1;
            console.log(arr);

            arr[arr.length] = 2;
            console.log(arr);
        </script>

去掉数组中元素的值是0的,重新生成一个新数组

        <script>
            //去掉数组中元素的值是0的,重新生成一个新数组
            // 获取数组中不是0的元素  存在到新的数组中
            //[5,0,4,2,0,8,0,9]

            var arr = [5,0,4,2,0,8,0,9];

            var new_arr = [];

            for(var i = 0; i < arr.length; i++){
                if(arr[i] != 0){
                    new_arr[new_arr.length] = arr[i];
                }
            }
            console.log(new_arr);
        </script>

合并数组-生成一个新的数组

        <script>
            var arr = [1,3,5,7,9];
            var arr1 = [2,4,6,8,10];

            var new_arr = [];

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

            for(var j = 0; j < arr1.length; j++){
                new_arr[new_arr.length] = arr1[j];
            }

            console.log(new_arr);

        </script>

合并数组-将一个数组追加到另一个数组里面

        <script>
            var arr = [1,2,3,4,5];
            var arr1= [6,7,8,9,10];

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

            console.log(arr);
        </script>

翻转数组-将一个数组翻转之后生成一个新的数组

        <script>
            // [1,2,3,4,5];

            var arr = [1,2,3,4,5];

            var new_arr = [];

            for(var i = arr.length - 1; i >= 0; i--){
                new_arr[new_arr.length] = arr[i];
            }
            console.log(new_arr);
        </script>

?数组翻转-在原数组上进行翻转

        <script>
            // 将两个变量互换

            //         0 1 2 3 4 
            var arr = [1,2,3,4,5];

            // 0   4
            // 1   3
            // 2   2
            // 给你一个i怎么另一个对应的下标
            for(var i = 0 ; i <= 2; i++){
                // arr[i]  arr[arr.length - i - 1]
                var temp = arr[i];
                arr[i] = arr[arr.length - i - 1];
                arr[arr.length - i - 1] = temp;
            }

            console.log(arr);

            // 0   length-1 - i(0)   5 -1- 0
            // 1   length-1 - i(1)   5- 1 -1
            // 2   length-1 - i(2)   5- 1 - 2
            // 两个数相加等于一个数 在js中  - 1 - i即可


        </script>
            var arr = [1,2,3,4,5,6];
            for(var i = 0; i < arr.length/2; i++){
                var temp = arr[i];
                arr[i] = arr[arr.length - 1- i];
                arr[arr.length - 1- i] = temp;
            }
            console.log(arr);

冒泡排序

        <script>
            // 0趟   比较了7次  0~6    7
            // 1趟   比较了6次  0~5    7
            // 2趟   比较了5次  0~4    7 
            // 3趟   比较了4次  0~3    7  
            // 4趟   比较了3次  0~2    7 
            // 5趟   比较了2次  0~1    7 
            // 6趟   比较了1次  0      7 

            // 一共是8个数  比较了7趟  因为每一趟都找到了一个最大的数 
            // 剩余的哪一个数就没有必要去比较了

            // 次数:每一趟都找到了一个最大值  那么那个最大值就没有必要
            // 再次比较了


            // (1)外层for循环是趟数
            // (2)内存for循环是次数
            // (3)如果前面的那个数要比后面的那个数大 才可以交换
            // (4)依赖于第三个变量 交换

            var arr = [6,5,3,1,8,7,2,4];

            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]){
                        var temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }

            console.log(arr);           
</script>

数组去重

        <script>
            var arr = [1,2,1,3,4,1,2,3,4];
            // 存储不重复的元素
            var new_arr = [];
            var flag = true;
            // 从旧的数组中一个一个的拿元素
            for(var i = 0; i < arr.length; i++){
                // 遍历的是新的数组
                for(var j = 0; j < new_arr.length; j++){
                    if(arr[i] == new_arr[j]){
                        flag = false;
                        break;
                    }
                }
                if(flag){
                    new_arr[new_arr.length] = arr[i];
                }
                flag = true;
            }
            console.log(new_arr);


        </script>

多维数组

        <script>
            // 一维数组
            var arr_one = ['卷饼','香肠','菠菜面','凉菜','炒饭'];
            console.log(arr_one[3]);

            // 二维数组
            var arr_two = [
                ['冷吃兔','跳水鱼','牛佛烘肘'],
                ['三合一','羊肉泡馍','biangbiang面']
            ];

            console.log(arr_two[1][0]);

            // 三维数组
            var arr_three = [
                [
                    ['大雁塔','华山','华清池']
                ],
                [
                    ['故宫','天坛','大观园']
                ]
            ];

            console.log(arr_three[0][0][2]);

        </script>

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:31:56  更:2022-04-27 11:36:04 
 
开发: 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年11日历 -2024/11/26 6:31:15-

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