2025年3月17日 星期一 甲辰(龙)年 月十六 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > JavaScript

解密JavaScript数组的神奇世界(必备操作指南)

时间:02-23来源:作者:点击数:10

目录

冒泡排序

选择排序

数组常用方法

unshift(元素,元素,……) : 前增

push(元素,元素,……) :后增

shift() : 前删

pop() : 后删

splice(start,delLength,newEle,newEle,……)

slice(start,end)

concat(newEle,newEle,……)

reverse() : 逆序排

sort() : 按编码排

toString() : (面试题:不是数组的方法,是Object对象的方法,数组继承到的方法)

数组.toString() : 将数组转为字符串

join('连接符')

ES5新增(都不会影响原数组)

indexOf(元素,start): 查找元素在数组中第一次出现的下标位置,如果没有,则返回-1

lastIndexOf(元素,start) : 查找元素在数组中从右向左查找第一次出现的下标位置,如果没有找到,返回 -1

forEach(function(value,index,array){}) : 遍历数组

map(function(value,index,array){return ...}) : 遍历数组,返回数组

some(function(value,index,array){return ...}) : 检测数组中每一个元素,如果有一个元素的条件返回true,则直接退出循环,返回true; 如果所有元素都返回false时,最终返回false

every(function(value,index,array){return ...}) : 检测数组中每一个元素,如果有一个元素的条件返回false时,则直接退出循环,返回false。 如果所有元素都返回true时,最终返回true.

filter(function(value,index,array){return ...}) : 过滤-条件,返回数组

reduce(function(prev,next,index,array){return ...}) : 归并

冒泡排序

(相邻)的两个数进行比较,符合条件,交换位置。

  •   冒泡排序:核心-相邻的两个数进行比较,符合条件,交换位置。
  •   小到大
  •   从前到后
  •   9   6   6   4   2
  •   6   9   4   2   4
  •   15 4   2   6
  •   4   2   9
  •   2   15
  •    //声明数组
  •    var arr = [9,6,15,4,2];
  • //轮数
  • function fnBubbleSortFromSmallToBig(arr){
  •    for(var i = 1;i < arr.length;i ++){
  •        //从数组中取元素---遍历
  •        for(var j = 0;j < arr.length - i;j ++){
  •            if(arr[j] > arr[j + 1]){
  •                var t = arr[j];
  •                arr[j] = arr[j + 1];
  •                arr[j + 1] = t;
  •           }
  •       }
  •   }
  •    return arr;
  • }
  • function fnBubbleSortFromBigToSmall(arr){
  •    for(var i = 1;i < arr.length;i ++){
  •        //从数组中取元素---遍历
  •        for(var j = 0;j < arr.length - i;j ++){
  •            if(arr[j] < arr[j + 1]){
  •                var t = arr[j];
  •                arr[j] = arr[j + 1];
  •                arr[j + 1] = t;
  •           }
  •       }
  •   }
  •    return arr;
  • }

选择排序

依次取一个元素 与 剩下所有元素 进行比较,符合条件,交换位置 。 数组常用方法

  •   选择排序:核心-依次取一个元素与剩下所有的元素进行比较,符合条件,交换位置。
  •   小到大
  •   从前到后
  •   9   6   6   4   2
  •   6   9   4   2   4
  •   15 4   2   6
  •   4   2   9
  •   2   15
  • function fnSelectFromSmallToBig(arr){  
  •    //遍历
  •    for(var i = 0;i < arr.length - 1;i ++){
  •        //遍历
  •        for(var j = i + 1;j < arr.length;j ++){
  •            if(arr[i] > arr[j]){
  •                var t = arr[i];
  •                arr[i] = arr[j];
  •                arr[j] = t;
  •           }
  •       }
  •   }
  •    return arr;
  • }
  • function fnSelectFromBigToSmall(arr){  
  •    //遍历
  •    for(var i = 0;i < arr.length - 1;i ++){
  •        //遍历
  •        for(var j = i + 1;j < arr.length;j ++){
  •            if(arr[i] < arr[j]){
  •                var t = arr[i];
  •                arr[i] = arr[j];
  •                arr[j] = t;
  •           }
  •       }
  •   }
  •    return arr;
  • }

数组常用方法

  1. unshift(元素,元素,……) : 前增
  • 作用:在数组前面添加元素。
  • 返回值: 返回新增后数组的长度
  • 是否影响原数组: 是
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • //在前面新增一个元素
  • console.log(arr.unshift(true,[1,2,3],false)); //8
  • console.log(arr); //[true,[1,2,3],false,5,6,7,8,9]
  1. push(元素,元素,……) :后增
  • 作用:在数组后面添加元素。
  • 返回值: 返回新增后数组的长度
  • 是否影响原数组: 是
  • //声明一个数组
  •    var arr = [5,6,7,8,9];
  • //在前面新增一个元素
  • console.log(arr.push(true,[1,2,3],false)); //8
  • console.log(arr); //[5,6,7,8,9,true,[1,2,3],false]
  1. shift() : 前删
  • 作用:删除数组中第1个元素
  • 返回值: 被删除的元素
  • 是否影响原数组: 是
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • console.log(arr.shift()); //5
  • console.log(arr); //[6,7,8,9]
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • // console.log(arr.shift()); //5
  • // console.log(arr); //[6,7,8,9]
  • //如何删除全部?
  • while(arr.length){ //0
  •    arr.shift();
  • }
  • console.log(arr);
  1. pop() : 后删
  • 作用:删除数组中最后一个元素
  • 返回值: 被删除的元素
  • 是否影响原数组: 是
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • console.log(arr.pop()); //9
  • console.log(arr); //[5, 6,7,8]
  1. splice(start,delLength,newEle,newEle,……)

start: 从哪个下标位置开始 delLenght: 删除几个元素 newEle : 新元素

  • 作用:在数组的任意位置进行增、删、改的操作。
  • 返回值: 被删除的元素数组
  • 是否影响原数组: 是
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • console.log(arr.splice(1)); //[6, 7, 8, 9]
  • console.log(arr); //[5]
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • console.log(arr.splice(1,2)); //[6, 7]
  • console.log(arr); //[5,8,9]
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • console.log(arr.splice(1,2,true,[1,2],false)); //[6, 7]
  • console.log(arr); //[5,true,[1,2],false,8,9]
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • console.log(arr.splice(1,0,true,[1,2],false)); //[]
  • console.log(arr); //[5,true,[1,2],false,6,7,8,9]
  1. slice(start,end)

start : 从哪里开始(包含) end : 到哪里结束(不包含)

  • 作用:截取数组中指定范围的元素。
  • 返回值: 被截取到的元素数组
  • 是否影响原数组: 否
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • console.log(arr.slice(1)); //[6,7,8,9]
  • console.log(arr); //[5,6,7,8,9]
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • console.log(arr.slice(1,4)); //[6,7,8]
  • console.log(arr); //[5,6,7,8,9]
  • // //声明一个数组
  • // var arr = [5,6,7,8,9];
  • // console.log(arr.slice(4,1)); //[]
  • // console.log(arr); //[5,6,7,8,9]
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • console.log(arr.slice(-4,-1)); // [6, 7, 8]
  • console.log(arr); //[5,6,7,8,9]
  1. concat(newEle,newEle,……)
  • 作用:将新元素拼接到指定数组的末尾。(如果新元素是一个数组,则去掉最外层的[],将里面的内容进行拼接)
  • 返回值: 拼接后的新数组
  • 是否影响原数组: 否
  • //声明一个数组
  • var arr = [5,6,7,8,9];
  • console.log(arr.concat(-4,[1,[2,3]],-1)); //[5, 6, 7, 8, 9, -4, 1, [2,3], -1]
  • console.log(arr); //[5,6,7,8,9]
  1. reverse() : 逆序排
  • 作用:将数组元素逆序存放
  • 返回值: 逆序后的数组
  • 是否影响原数组: 是
  • var arr = [5,6,7,8,9];
  • console.log(arr.reverse()); //[9,8,7,6,5]
  • console.log(arr); //[9,8,7,6,5]
  1. sort() : 按编码排
  • 作用:将数组中的元素按字符编码从小到大排序
  • 返回值: 排序后的数组
  • 是否影响原数组: 是

sort(function(a,b){return a - b;}) : 按数字从小到大排序 sort(function(a,b){return b - a;}) : 按数字从大到小排序

  • var arr = [3,2,10,1,100,20];
  • console.log(arr.sort()); //[1,10,100,2,20,3]
  • console.log(arr); //[1, 10, 100, 2, 20, 3]
  • toString() : (面试题:不是数组的方法,是Object对象的方法,数组继承到的方法)
  • 数字.toString(2-36) : 将数字转为指定进制的字符串
  • var i = 10;
  • console.log(i.toString(2)); //1010
  • console.log(i.toString(8)); //12
  • console.log(i.toString(16)); //a
  • 数组.toString() : 将数组转为字符串
  • var arr = [1,2,3,4];
  • console.log(arr.toString()); //'1,2,3,4'
  • console.log(arr); //[1,2,3,4]
  • join('连接符')
  • 作用:将数组转为以指定连接符连接成的字符串。
  • 返回值: 字符串
  • 是否影响原数组: 否
  • var arr = [1,2,3,4];
  • console.log(arr.join('+')); //'1+2+3+4'
  • console.log(arr); //[1,2,3,4]
ES5新增(都不会影响原数组)
  • indexOf(元素,start): 查找元素在数组中第一次出现的下标位置,如果没有,则返回-1
  • var arr = [1,2,3,1,2,3,2,4,2,1];
  • console.log(arr.indexOf(2,2)); //4
  • console.log(arr.indexOf(5)); // -1
  • lastIndexOf(元素,start) : 查找元素在数组中从右向左查找第一次出现的下标位置,如果没有找到,返回 -1
  • var arr = [1,2,3,1,2,3,2,4,2,1];
  • console.log(arr.indexOf(2,2)); //4
  • console.log(arr.indexOf(5)); // -1
  • console.log(arr.lastIndexOf(2)); //8
  • console.log(arr.lastIndexOf(2,2)); //1
  • console.log(arr.lastIndexOf(2,5)); //4
  • forEach(function(value,index,array){}) : 遍历数组
  • map(function(value,index,array){return ...}) : 遍历数组,返回数组
  • some(function(value,index,array){return ...}) : 检测数组中每一个元素,如果有一个元素的条件返回true,则直接退出循环,返回true; 如果所有元素都返回false时,最终返回false
  • every(function(value,index,array){return ...}) : 检测数组中每一个元素,如果有一个元素的条件返回false时,则直接退出循环,返回false。 如果所有元素都返回true时,最终返回true.
  • filter(function(value,index,array){return ...}) : 过滤-条件,返回数组
  • reduce(function(prev,next,index,array){return ...}) : 归并
  • var arr = [99,100,89,59,98];
  • var sum = arr.reduce(function(prev,next){
  •    console.log(prev,next);
  •    // prev = 99 next = 100
  •    //prev = 199 next = 89
  •    // prev = 288 next = 59
  •    //prev = 347 next = 98
  •    //prev = 455
  •    return prev + next;
  • })
  • alert(sum);
  • var sum = arr.reduce(function(prev,next){
  •    console.log(prev,next);
  •    // prev = 0 next = 99
  •    //prev = 99 next = 89
  •    return prev + next;
  • },0)
  • alert(sum);
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐