从零开始学前端:程序猿小白也可以完全掌握!—今天你学习了吗?(JS) 
复习:从零开始学前端:作用域、执行顺序 — 今天你学习了吗?(JS:Day9)   
 
前言 
毕设前端差不多了,可是后端才是重头戏啊喂!好难好难~  
第十节课:字符串和数组的方法 
一、字符串的方法 
1.定义/声明方式 
        var str1 = 'candy';                 
        var str2 = String('123');                
        var str3 = new String('abc123');    
        
        console.log(str1)
        console.log(str2)
        console.log(str3)
        console.log(typeof str3);           
       
  
运行:     
2.length长度 
        var str1 = 'coisini';
        var str2 = '5201314';
        
        console.log(str1.length);    
        console.log(str1[1]);    
  
运行结果:     
3.charAt返回指定索引的字符串(输入下标返回字符) 
索引即下标  
        var str1 = 'abcdefg'
        console.log(str1.charAt(3));    
  
效果:     
4.concat字符串拼接/合并字符串 
 
 语法:  str.concat(str,str,…); 字符串拼接  用于把一个或多个字符串连接到一块,返回拼接好的字符串  
  
        var str1 = String('Coisini')
        var str2 = new String('Jojo')
        console.log(str1 + str2);  
        console.log(str1.concat(str2));
        console.log(str1.concat(str2, 'pupy', 'crazy', 'loyal'));
  
效果:     
5.indexOf查找字符串(输入字符返回下标) 
查找字符串,返回查找字符串首次出现的位置;  
        var str = '5201314'
        
        console.log(str.indexOf('1'))   
        console.log(str.indexOf('1', 4))   
        
        console.log(str.indexOf('5', 2))
  
效果:     用法(了解即可,不详解):  
<div id="box" class="wrap on active"></div>  
<div id="box" class="wrap on active"></div>
  
console.log(box.className.indexOf('on')); 
  
效果:     2. lastIndexOf('0')  
var str = '5201314'
console.log(str.lastIndexOf('1'))
  
效果:     
6.charCodeAt(index)返回指定索引的ASCII编码(了解即可,不详解) 
        
        var str = '52011314'
        console.log(str.charCodeAt(1))
  
效果:     
7.formCharCode:返回指定ASCII编码的字符串(了解即可,不详解) 
        
        console.log(String.formCharCode(53))
        
        console.log(String.formCharCode(53, 50, 48, 49, 51, 49, 52))
  
8.substring:截取字符串(根据下标截取字符串,左闭右开)和substr 
语法:  
 
 substring(start,end)截取字符串:截取到的字符串时前闭后开形式的  substr(start,length)截取字符串  
  
        var str2 = '5201314'
        
        console.log(str2.substring(1, 5)) 
        console.log(str2, sunstr(0, 7))  
  
效果:     
9.slice截取字符串(根据下标截取字符串,前闭后开) 
 
 截取字符串,从start开始,截止到end前,不包含end,前闭后开;  
  
        
        
        
        
        console.log(str2.slice(0, 2))
        
        console.log(str2.slice(0, -2))
  
效果:     
10.str.toLocaleUpperCase():小写转大写; str.toLocaleLowerCase():大写转小写 
        var str1 = 'coisini'
        var str4 = 'CRAZY WORLD'
        
        console.log(str1.toUpperCase());
        console.log(str1.toLocaleUpperCase());   
        
        console.log(str4.toLowerCase());
        console.log(str4.toLocaleLowerCase());
  
效果:     
11.match匹配的值:正则用的多 
 
 str.match(value/RegExp)查找指定的值,返回匹配的值。未找到返回null,筝则可以找一个或多个表达式  
  
        var str3 = 'HAPPY';
        console.log(str3.match('H'));   
        console.log(str3.match(/a/i));   
        
        console.log(str3.match('1'));
        
  
12.search返回检索字符串首次出现的位置;未找到返回-1 
 
 str.search(‘需要搜索的字符’)  
  
        var str1 = 'coisini'
        var str2 = '5201314'
        var str3 = new String('abc123')
        console.log(str2.search('4'));    
        console.log(str2.search('8'));    
        
        
  
13.replace替换:输入替换字符,返回替换后的字符串 
 
 str.replace(‘需要替换的字符’,‘替换后的字符’)  
  
        var str1 = 'coisini'
        var str2 = '5201314'
        var str3 = new String('abc123')
        
                
        console.log(str2.replace('0', '1'))
        console.log(str2.replace('8', '5'))
  
效果:     
14.str.split()分割成字符串数组:去掉当前字符,然后数组输出其他字符组成的串 
        var str2 = '5201314'
        
        
        console.log(str2.split('0', 5))   
        console.log(str2.split(' '))   
        console.log(str2.split(''))   
  
效果:     
二、Array()数组 
1.定义/声明方式 
        var arr = []  
        var arr2 = Array(1, 2, 3)   
        consol.log(arr2);  
        var arr3 = Array(6)   
        var arr4 = new Array(1, 2, 3);  
        var arr5 = new Array(6);
        
  
2.length长度 
        var arr = [1, 2, 3, 4, 5, 0];
        
        console.log(arr.length);  
  
3.[]通过数组索引,访问值 
        console.log(arr[0])   
        
        arr[2] = 8888
        console.log(arr);  
  
4.在数组后面添加项 
        console.log(arr[arr.length] = 999)  
        console.log(arr)
  
5.concat数组拼接 
        
        console.log(arr.concat(arr2));   
        
        console.log(arr);  
  
+号拼接展示:  
        var arr1 = Array(1, 2, 3)   
        var arr3 = new Array(666, 888);
        var arr6 = arr1 + arr3
        console.log(arr6)
  
效果:  是object类型     
6.join:将数组拼接成字符串 
 
 arr.join(‘中间的连接词’)  
  
        var str = "Hello everyone!"
        var arr1 = str.split(' ');
        console.log(arr1)
        var arr = arr1.join('^')
        console.log(arr)
        
        console.log(arr1.join(' '));
        
        console.log(arr1.join(''))
  
效果:     
7.indexOf查找数组里面的数据 
 
 查找字符串,返回查找字符串首次出现的位置;  
  
        var arr5 = [5, 2, 0, 1, 3, 1, 4]
        console.log(arr5.indexOf(0))    
        
        console.log(arr5.indexOf(0, 3));  
        
        
        var arr = [1, 2, 3, 4, 5, 0, [123]];
        console.log(arr.indexOf([123]))
  
效果:     
8.delete删除项 
        var arr3 = new Array(666, 888);
        
        console.log(arr3)
        delete arr3[0];
        console.log(arr3)
        arr3.length = 0;
        console.log(arr3);    
  
效果:     
9.unshift()向数组的头部添加一个或更多元素,并返回新的长度 
        var arr = [5, 2, 0, 1, 3, 1, 4]
        console.log(arr.unshift('coisini')) 
        console.log(arr);  
  
效果:     
10.push(item 1,item 2, …)向数组的尾部添加一个或更多元素,并返回新的长度 
        var arr = [5, 2, 0, 1, 3, 1, 4]
        arr.push('coisini');
        console.log(arr);   
        
        console.log(arr[arr.length] = 999);
        console.log(arr);
        
        console.log(arr[arr.length - 1])
  
效果:     
11.shift()删除数组的第一个元素(返回删除对象) 
        
        var arr = [5, 2, 0, 1, 3, 1, 4];
        console.log(arr.shift());
        console.log(arr);   
  
效果:     
12.pop()删除数组的最后一个元素(返回删除对象) 
        
        var arr = [5, 2, 0, 1, 3, 1, 4];
        console.log(arr.pop());
        console.log(arr);   
  
效果:     
三、arr.splice:数组的增加替换删除(重难点) 
 
 (index,how,item1,item2)删除 替换 添加,返回删除项 — 修改数组  arr,splice(下标,长度)  
  
            index 删除、替换、添加的位置
            how   删除个数,0不删除
            item  添加项
  
不进行处理,返回值为空:  
        
        var arr = [5, 2, 0, 1, 3, 1, 4];
        var arr1 = arr.splice()
        console.log(arr1);   
  
删除:  
        
        
        
        var arr = [5, 2, 0, 1, 3, 1, 4];
        var narr = arr.splice(1, 5);
        console.log(narr);  
        console.log(arr);   
  
替换:  
        
        
        
        
        var arr = [5, 2, 0, 1, 3, 1, 4];
        var narr = arr.splice(1, 2, 'hello', 'world');  
        console.log(narr);
        console.log(arr);   
  
添加:  
        
        
        
        
        var arr = [5, 2, 0, 1, 3, 1, 4];
        var narr = arr.splice(1, 0, 'hello', 'world');
        console.log(narr);
        console.log(arr);   
  
效果:     
四、数组的排序:sort和map(重难点) 
 
 arr.sort() :数组的高阶函数【回调函数】:一个函数作为两外一个函数的参数  
  
        var arr = [520, 66, 666, 250, 409, 404, 200]
        
        arr.sort(function (a, b) {
            console.log(a)   
            console.log(b)   
        });
  
a:     b:     
1. return的值不同数组的变化不同:  
 
   倒序排列:return的值 < 0的时候,会进行倒序处理;
  
  
     a-b: 排序【小至大】递增
     b-a:排序【大至小】递减
  
倒序:  
        var arr = [520, 66, 666, 250, 409, 404, 200]
        
        var arr1 = arr.sort(function (a, b) {
            
            
            return -1
        });
        console.log(arr1)
  
效果:     
递增:  
        var arr = [520, 66, 666, 250, 409, 404, 200]
        
        var arr1 = arr.sort(function (a, b) {
            
            
            
            return a - b
        });
        console.log(arr1)
  
效果:     
递减:  
        var arr = [520, 66, 666, 250, 409, 404, 200]
        
        var arr1 = arr.sort(function (a, b) {
            
            
            
            
            return b - a
        });
        console.log(arr1)
  
效果:     
2. arr.reverse()数组的反转:  
        console.log(arr)
        console.log(arr.reverse())
  
效果:     
2. arr.map数组的遍历:  
语法:  
        
        arr.map(function (value, index, arrSelf) {
            
            
            
        })
  
value:     
Iindex:     arrSelf:     
map内可进行处理:  
        var arr1 = arr.map(function (value, index, arrSelf) {
            
            
            
            return value * 2
        })
        console.log(arr)
        console.log(arr1)
  
效果:     
3. arr.map数组的应用:  
        var oBtn = document.getElementsByClassName("btn")
        console.log(oBtn)
        var arr = [5, 2, 0, 1, 3, 1, 4]
        
        var arr1 = [...oBtn]   
        var arr2 = arr1.forEach(function (item, index, arrSelf) {
            item.onclick = function () {
                alert(index)
            }
        })
  
截图:  输出button的下标     
五、数组的方法:filter和find 
区别:  
 
 filter:过滤满足条件的所有值  find:过滤数组,只返回满足条件的第一项  
  
filter:过滤数组中的数字  
        var arr = [520, false, null, 0, function fn() { }, '888']
        
        var fils = arr.filter(function (val, idx, arrself) {
            
            
            return typeof val === 'number'
            
            
        })
        console.log(fils)
  
效果:     
find:过滤数组,只返回满足条件的第一项  
        var arr = [520, false, null, 0, function fn() { }, '888'];
        var num = arr.find(function (val, idx, arrself) {
            
            
            return val
        })
        console.log(num) 
  
效果:     
预习:对象序列化与反序列化、冒泡排序、数组去重 
                
                
                
        
        
    
  
 
 |