【数据结构与算法】 数组

  • 定义:
    • 一个存储元素的线性集合,元素同通过索引来任何存取,索引通常是数字,用来计算元素之间存储位置的偏移量;
  • 使用数组:
    • Array.isArray()来判断一个对象是否未数组;
    • length属性反映的是当前数组中元素的个数,可确保循环遍历了数组中的所有的元素;
    • 由字符串生成数组:
      • str.split(" ");通过分隔单词的空格,将字符串分为几部分;、
    • 对数组的整体性操作:
      • 当把一个数组赋值给另外一个数组时,只是为被赋值的数组增加了一个新的引用;当通过原引用修改了数组的值,另外一个引用也会感知到此变化;这种行为被称为浅复制;
      • 深复制函数:copy(被复制的变量,复制到的新变量),将原数组中的每一个元素都复制一份到新数组中;
  • 存取函数:
    • 访问数组元素的函数,这些函数返回目标数组的某种变体;
      • 查找元素:
        • indexOf();
          • arr.indexOf("Jackie");用于查找arr数组中是否有Jackie,有的话返回Jackie在数组中的索引;若不包含,返回-1;
          • 总是返回第一个与参数相同的元素的索引;
        • lastIndexOf();
          • 总是返回相同元素中最后一个元素的索引,若未找到相同元素,则返回-1;
      • 数组的字符串表示:
        • arr.join();和arr.toString();可返回一个包含数组所有元素的字符串,各元素之间用逗号分隔;
        • 对数组直接打印,系统会自动调用数组的toString()方法;
      • 由已有数组创建新数组:
        • arr1.concat(arr2);将数组2元素连接到arr1后;
        • arr1.splice(截取的起始索引,截取的长度);从现有数组里截取一个新数组,splice()方法会影响原数组;
  • 可变函数:
    • 为数组添加元素:
      • arr1.push(新元素);将一个新元素添加到数组末尾;
      • arr[arr.length]=新元素;将一个新元素添加到数组末尾;
      • arr1.unshift(新元素1,新元素2);将新元素加到原数组头部;
    • 从数组中删除元素:
      • arr.pop();删除数组末尾的元素;
      • arr1.shift();删除数组第一个元素;
      • pop()和shift()方法都将删掉的元素作为方法的返回值返回;
    • 从数组中间位置添加和删除元素:
      • arr.splice(起始索引,0,添加进数组的元素);
  • 为数组排序:
    • arr.reverse();
      • 将数组中元素的顺序进行翻转;
    • arr.sort();
      • 按照字典顺序对元素进行排序;
      • 为了让sort()方法也能排序数字类型的元素,可在调用方法时传入一个大小比较函数,排序时,sort()方法将会根据该函数比较数组中两个元素的大小,从而决定整个数组的顺序;
        • let num= [40, 100, 1, 5, 25, 10];
        • num.sort(function(a,b){
        • return a - b;});
        • console.log(num);
        • //[1, 5, 10, 25, 40, 100]
  • 迭代器方法:
    • 不生成新数组的迭代器方法:
      • arr.forEach(某函数);接受一个函数作为参数,对数组中的每个元素使用该函数;
      • arr.every(某函数);接受一个返回值为布尔类型的函数,对数组中每个元素使用该函数。若对于所有的元素,该函数均返回true,则该方法返回true;
      • arr.some(某函数);接受一个返回值为布尔类型的函数,只要有一个元素使得该函数返回true,该方法就返回true;
      • arr.reduce(某函数);接受一个函数,返回一个值;该方法会从一个累加值开始,不断对累加值和数组中的后续元素调用该函数,直到数组中的最后一个元素,最后返回得到的累加值;
      • arr.reduceRight(某函数);从右到左执行;
    • 生成新数组的迭代器方法:
      • arr.map(某函数);对数组中的每个元素使用某个函数,返回一个新的数组;
      • arr.filter(某函数);传入一个返回值为布尔类型的函数,当对数组中所有元素应用该函数,结果均为true时,返回应用该函数后结果为true的元素数组;
  • 二维和多维数组:
    • 创建二维数组:
      • const m = 4;
      • const n = 5;
      • let arr = new Array(m);
      • for (var i = 0; i < m; i++) {
      • arr[i] = new Array(n);
      • }
      • console.log(arr);
    • 处理二位数组的元素:
      • 两个for循环,外层循环对应行,内层循环对应列;
    • 层次不齐的数组:
      • 每行包含元素个数不同;
      • for(var row=0;row < arrs.length; ++row) {
      • for(var col=0;col<arrs[row].length;++col)
      • {
      • }
      • }
  • 对象数组:
    • 数组可包含对象,数组的方法和属性对对象依然适用;
  • 对象中的数组:
    • 在对象中,可使用数组存储复杂的数据。
  • 欢迎大家留言评论,一起学习共同进步!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值