js 数组 字符串 包含的一些方法

3,287 阅读7分钟

1.创建数组

var arr1 = []
var arr2 = new Array(2,3,'你好世界');

2.数组包含的方法

2.1判断一个变量是一个数组

 // 1)instancof
// arr instancof Array, true就是数组,如果不为true就不是数组
// 2)Array.isArray(arr) true就是数组,如果不为true就不是数组
        var arr1;
        var arr = [1, 2, 3, 4, 5];
        console.log(arr1 instanceof Array)//false
        console.log(Array.isArray(arr))

2.2 反转数组 reverse(arr)

var arr = [1, 2, 3, 4, 5]; 
        function reverse(arr){
            if(Array.isArray(arr)){
                var newArr=[];
                for(var i = arr.length-1;i>=0;i--){
                    newArr[newArr.length] = arr[i]
                }
                return newArr;
            }else{
                return alert('这不是一个数组')
            }
        }
        console.log(reverse(arr))

2.3 给数组添加新数值 删除数值

// 1.push函数将10推到数组中去,并且返回arr的新长度 ,压到最后面
// 2.pop 函数将10弹出去, 并且返回弹出去的值!!!弹出去最后面的值
// 3.unshift 压入
// unshift压到数组中的最前面,并且返回数组的新长度
// 4.shift 弹出
// shift 函数将100 弹出去, 并且返回弹出去的值!!! 弹出去最前面的值
  1. push pop都是对数组最后面的数起作用

  2. unshift shift 都是对数组最前面的数起作用

  3. push unshift 都是添加数值 且返回新数组的长度

  4. pop shift 都是删除数值 且返回删除的数值

2.4 反转数组 reverse()

 console.log(arr.reverse())

2.5数组排序

//数组从小到大排序
    arr.sort(function(a,b){
        return a-b;
    })
    console.log(arr)
    //数组从大到小排序
    arr.sort(function(a,b){
        return b-a;
    })
    console.log(arr)
  1. 若a-b则为从小到大
  2. 若b-a则为从大到小

2.6获取数组中元素的索引值

  1. indexOf(value) 获取到数组中第一个为value的索引值!!!
  2. lastIndexOf(value)获取到数组中最后一个为value的索引值!!!
  3. ☆☆☆☆☆☆☆☆
  4. indexOf(value) lastIndexOf(value) 获取不到value时 返回-1;
 <script>
        //获取数组中元素的索引值
        var arr = ["red", "yellow", "pink", "yellow"]
        
        // indexOf(value) 获取到数组中第一个为value的索引值!!!
        console.log(arr.indexOf('yellow'));
        // lastIndexOf(value)获取到数组中最后一个为value的索引值!!!
        //indexOf(value) lastIndexOf(value) 获取不到value时 返回-1;
        console.log(arr.lastIndexOf('yellow'));
        console.log(arr.lastIndexOf('blue'));//-1
    </script>

2.7 数组转字符串

  1. 方法1
 var arr = [1,2,3,4,5];
console.log(arr.toString())
console.log(String(arr));
  1. 方法2 使用join函数进行自定义分隔符
 var arr = [1,2,3,4,5];
 console.log(arr.join('   '))

2.8 数组遍历

arr.forEach(function(item){}) 需要传递函数进去item表示数组内的值1,2,3,4循环

        var arr = [1, 2, 3, 4, 5]
        arr.forEach(function(item){
           console.log(item)
        })

2.9 数组过滤 filter

arr.filter(function(item,index){}) 同理 item表示数组内的真正的值,index表示索引值,循环遍历,找出满足条件的值,返回出来 放到另一个数组内
        过滤出来数组中大于5的数值
        var arr1 = [23, 2, 1, 56, 6, 10]
        var arr2 = arr1.filter(function(item,index) {
            // console.log(index)
            return item > 5
        })

2.10 some 查找这个值是否存在于数组中!!!

 找到数值,返回true 否则返回false
 item表示数组内的真正的值,index表示索引值,循环遍历,找出满足条件的值,
 只要找到一个就返回 true 跳出循环。
        找到数值为1的
        var arr3 = [6, 1, 3, 4, 10, 20]
        var arr4 = arr3.some(function(item, index) {
            return item == 1
        })
        console.log(arr4)

2.11 every 每一个

// 判断所有的值大等于10 所有数据大于等于10, 则返回true,有一个不满足条件就返回false
        var arr5 = [10, 20 , 30 , 33, 22, 355, 11]
        // 判断所有的值大等于10 所有数据大于等于10, 则返回true,有一个不满足条件就返回false
        var res = arr5.every(function(item, index) {
            return item >= 10;
        })
        console.log(res)

数组的去重

思路:

  1. 把数组中的每一项都取出来,
  2. 每取一个值,就要和新数组中进行对比,看是否有了这个字符,如果没有直接压入,如果有则抛弃

注意 每取一个值,就要和新数组中进行对比 if(newArr.indexOf(arr[i]) === -1)

  1. 取到一个value与新数组进行对比看新数组内有没有value 没有就返回 -1 ;就把这个数值添加到新数组中
    <script>
        // 把数组中的每一项都取出来,
        // 每取一个值,就要和新数组中进行对比,看是否有了这个字符,如果没有直接压入,如果有则抛弃
        var arr = ["a", "b", "c", "a", "d", "b"]
        var newArr = [];
        for(var i =0; i < arr.length;i++ ){
          if(newArr.indexOf(arr[i]) === -1){//去到一个value与新数组进行对比看新数组内
          有没有value 没有就返回 -1 ;就把这个数值添加到新数组中
            newArr.push(arr[i]);
          } 
        }
        console.log(newArr);
    </script>

3.字符串

3.1字符串的定义

  1. 方法1 单引号和双引号没有区别!!
 var str = 'helloworld!!!';
        console.log(str)
        var str = "helloworld!!!";
        console.log(str)
  1. 方法2 new String()运用构造函数
        var str = new String('helloworld!!!')
        console.log(str);

3.2 字符串具有不可变性

 <script>
   var str = "helloworld";
   console.log(str[0]);
   str[1]='E';
   console.log(str);//helloworld 虽然给赋值了,但是没有发生变化!!!
    // 字符串具有不可变性!!
</script>

3.3 字符串的提取

就像数组一样可以 str[index] index从零开始
如
var str = "helloworld";
console.log(str[0])// 为 h;

str[index]与str.charAt(index) 有什么区别 区别1:当index的取值不在str的长度范围内,str[index]放回undefined,charAt(index)放回空字符串; 区别2:str[index]不兼容ie6-ie8,charAt(index)可以兼容; 另:使用中括号[]的方式,不容易区分这个变量是字符串还是数组;

3.4字符查找(根据字符返回位置)

  1. obj.indexOf('value1',value2)
  2. value1代表查找的数 value2 代表从索引值为value2的位置开始查找;
    <script>
        //obj.indexOf('value1',value2)
        //value1代表查找的数 value2 代表从索引值为value2的位置开始查找;
        var str = "helloworld!!!";
        console.log(str.indexOf('l'))//4
        console.log(str.indexOf('o' , 4) )
        // 第二个参数是从索引值为4的位置开始查找!!!
        // console.log(str.lastIndexOf('l' ,4) )
    </script>

3.5 由位置求出字符串中的字符

  1. charAt(index)
  2. charCodeAt(index)是将字符转换成Ascii
  3. String.fromCharCode(num) 将Ascii转为字符
    <script>
        var str = '你好';
        //由位置求出字符串中的字符charAt(index);
        console.log(str.charAt(0));
        
        //charCodeAt(index)是将字符转换成Ascii
        var str = "helloworld";
        console.log(str.charCodeAt(0));
        // ASCII 是什么。编码。。。utf8 gbk gb2312...

         // String.fromCharCode(num) 将Ascii转为字符
         console.log(String.fromCharCode(107));//k
         
    </script>

3.6 字符串的合并concat()与截取 substr(num1,num2)

  1. 使用concat()进行连接字符串
  2. substr(num1,num2)截取字符串
  3. 第一个参数为从索引号为0 开始
  4. 第二个参数取几个字符
  5. -1是在最后一个位置 -2表示从倒数第二个位置开始截取

3.7 字符串的替换 replace()

  1. 字符串里面的字符进行替换 replace(" ", "")
  // 字符串里面的字符进行替换 replace(" ", "")
          // " " => ""
          var str = "helloworld 改 革 春 风 吹 满 地 ";
         console.log( str.replace(' ',''));
         while(str.indexOf(" ") !== -1) {
            str = str.replace(" ", "")
        }
       

3.8 字符串转换为数组 使用split转换成数组

        var str = "red,pink,blue";
        console.log(str.split(','));

3.9 //trim剪切 去掉字符串头和尾部的空格 并返回一个新的字符串

        var input = "  asdfasdf  asdf as asd sd "
        var str = input.trim()
        console.log(input)
        console.log(str)

3.10 match 找到一个或多个正则表达式的匹配找到后以数组的形式返回过来,数据类型是对象

        var str = '小明:大神么么哒,正好是我想要的,我的邮箱是xiaoming@qq.com小红:我老公最爱看这个了,我想给他一个惊喜,么么么哒,邮箱是xiaohong@sina.com我:好人一生平安,邮箱是wuyou@163.com'
        var arr = str.match(/\w+@\w+\.\w+/g);
        console.log(arr)
        console.log(typeof arr)
        
        arr.forEach(function(emil){
            console.log(emil)
        })

3.11字符串的拼接 concat

        // var str1 = 'hello';
        // var str2 = 'world';
        // var str3 = str1.concat(str2);
        // console.log(str3)//helloworld

3.12 search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果匹配到返回第一个匹配的index没有找到任何匹配的子串,则返回 -1。

        var str1 = '好好学习,天天向上'
        console.log( str1.search('学习'))//2
        console.log(str1.search(/天天/g))//5
        console.log(str1.search(/你好/g))//-1

3.13 slice(n,m) 左闭右开index从n截取,截取到m-1.提取字符串的片断,并在新的字符串中返回被提取的部分

        var str2 = '法外狂徒,张三'
        var str3 = str2.slice(2,4)
        console.log(str3)//狂徒