数组的基本操作2和一些常见的字符串

遍历

for循环

  • 语法:for(var i = 0; i<arr.length; i++ ){ 
        console.log(arr[i])
    }

  • 对象不可以使用for循环

for..in循环

  • 语法:
    for(var key in obj){
        //key 就是对象的属性名,obj 就是要遍历的对象
        console.log(key+"=="obj[key])
          }

  • for是遍历的对象有多少属性就循环多少次

数据的传值

  1. 函数参数传递和基本数据类型的变量赋值一样的,赋值后两个变量互不影响

    function fn(n,m){
    n = 100;
    m = 999;
    }
    var a = 10;
    var b = 9;
    fn(a,b)
    console.log(a,b); // 10 9
  2. 函数参数的传递和复杂数据类型的变量赋值是一样的,是地址的赋值,赋值后两个变量操作的同一个存储空间

    function ff(obj1){
    obj1.name = 'lisi';    
    }
    var obj = {name:'zhangsan',age:17};
    ff(obj);
    console.log(obj.name);// lisi

冒泡排序

原理:遍历数组拿到最大值,并放到最后的位置

循环数组的时候,将前一个和后一个进行比较,如果前一个更大,则交换位置

  for(var j = 0;j<arr.length-1;j++){
    for(var i = 0; i<arr.length-1-j;i++){
      if(arr[i]>arr[i+1]){
        var tmp = arr[i];
        arr[i] = arr[i+1];
        arr[i+1] = tmp
      }
    }
  }
  console.log(arr);
​

数组选择排序

原理:假设第0个位最小值

从第1个开始循环数组,拿数组中的元素个我们假设的值进行比较,如果比我们假设的更小,则记录下索引,并调换位置

假设第1个位最小值

从第2个开始循环数组,拿数组中的元素个我们假设的值进行比较,如果比我们假设的更小,则记录下索引,并调换位置

假设第2个位最小值

。。。

    for(var j = 0;j<arr.length-1;j++){
      var minIndex = j; 
      for(var i = j+1; i<arr.length;i++){
        if(arr[minIndex]>arr[i]){
          minIndex = i
        }
      }
      // 如果minIndex中的值在循环之后没有变化,则不需要交换位置
      if(minIndex !== j){
        var tmp = arr[j];
        arr[j] = arr[minIndex];
        arr[minIndex] = tmp;
      }
      console.log(arr);
    }
 

ES5的常见数组方法

forEach 遍历数组

  • 不会改变原来数组

    • 没有返回值

  • 语法:

    数组.forEach(function(item,index,arr){
          // item 表示数组中的每一个元素
          // index 表示数组中索引
          // arr 表示数组本身
    })
    数组有多少个元素,就循环多少次
  • 案例

    var res = arr.forEach(function(item,index,arr){
    console.log(index+'===>'+item);
    console.log(arr);   
    });
    console.log(res);
    console.log(arr);

map 映射

  • 根据特定的条件计算返回数组元素计算后的结果,是一个新数组

  • 不会改变原来的数组

    • 返回值:按照要求改变的新数组,按条件返回元素,条件写在return后

    • var newArr = arr.map(function(item,index,arr){
      console.log(item,index);
      console.log(arr);
      return item*1.5;
      })
      console.log(newArr);
      console.log(arr);

filter 过滤

  • 按条件过滤数组中的元素,符合条件的元素返回组成一个新数组

  • 不会改变原来的数组

    • 返回值:把符合条件的原数组中的元素,组成的新数组;

    • var newArr = arr.filter(function(item,index,arr){
      console.log(item,index,arr);
      return item>2;
      })
      console.log(newArr);
      console.log(arr);

some() 遍历数组(或者)

  • 只要数组中有一个元素符合条件,返回布尔值true,否则返回false,循环数组中,只要出现了一次符合条件的,就停止循环

  • 不会改变原始的数组

    • 返回值:布尔值

    • var res = arr.some(function(item,index,arr){
      console.log(index,item,arr);
      return item>3;
      })
      console.log(res);
      console.log(arr);

every() 遍历数组(并且)

  • 只要数组中有一个元素不符合条件,就返回false,全部符合条件才返回true;,循环数组中,只要出现了一次不符合条件的,就停止循环

  • 不会改变原数组

    • 返回值:布尔值

    • var res = arr.every(function(t,i,a){
      console.log(t,i,a);
      return t>2;
      })
      console.log(res);
      console.log(arr);

字符串常用方法

charAt

  • 语法:charAt(索引); 根据索引下标找到字符串中对应的字符,如果找不到则返回空字符;

    console.log(str.charAt(0));  // h
    console.log(str.charAt(20)); // ''

charCodeAt

  • 语法:charCodeAt(索引); 根据索引下标找到字符中的对应字符,并且转换为ASC表的编码;

    console.log(str.charCodeAt(5)); // 97
    console.log(str.charCodeAt(0)); // 104
    console.log(str.charCodeAt(20)); // NaN

indexOf

  • 语法:indexOf("内容"); 查找内容在字符串中的索引下标,如果没有则返回-1

    var str = 'qwerasdtyyuuioi';
    console.log(str.indexOf('h')); // 0
    console.log(str.indexOf('k')); //12
    console.log(str.indexOf('j')); // -1
    如果字符串中有多个相同字符,查找返回第一个索引
    console.log(str.indexOf('o')); // 4
    indexOf(内容,起始索引)  查找内容从起始索引开始查找
    console.log(str.indexOf('o',5)); // 9

split

  • 语法:split("内容"); 字符串根据指定的内容字符,炸开,形成一个数组

    console.log(str.split('o')); // ["hell", "arey", "u", "k"]
    console.log(str.split()); // ["helloareyouok"]
    var str1 = '2021-08-17';
    console.log(str1.split('-')); //  ["2021", "08", "17"]

substring

  • 语法:substring(索引1,索引2); 根据索引截取字符串中的内容,返回截取的内容

  • 不会改变原字符 (包前不包后,不包含大的索引)

var str = 'helloarAAAeyouok'
console.log(str.substring(1,3)); // el
console.log(str.substring(3,1)); // el
console.log(str.substring(3)); // loareyouok 只有一个索引就是从这个索引到最后

substr

  • 语法: substr(起始索引,截取的个数); 从起始索引开始去取对应的个数

  • 不会改变原字符

    var str = 'helloarAAAeyouok'
    console.log(str.substr(0,3)); //hel
    console.log(str);
    console.log(str.substr(3,3)); //loa

转换大小写

  • 语法: toLowerCase()转为小写 toUpperCase() 转为大写

    var str = 'helloarAAAeyouok'
    console.log(str.toUpperCase());  // HELLOARAAAEYOUOK
    console.log(str.toLowerCase()); // helloaraaaeyouok

replace

语法:replace(准备替换的原内容,替换的内容) 字符串内容替换

var str = 'helloareyouok';
console.log(str.replace('areyouok',' world'));//hello world
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值