JavaScript数组对象&字符串对象

本文介绍了JavaScript中数组的基本操作,如添加删除元素、筛选、排序及索引等。同时,讲解了字符串对象的使用,包括获取特定位置字符、统计字符出现次数以及各种字符串操作方法。文章还提供了实例,如判断用户名合法性的示例代码。
摘要由CSDN通过智能技术生成

数组对象

1.添加或删除数组元素

        arr=[];//创建数组
        obj={};//创建对象
        console.log(arr instanceof Array);//true(判断arr是否是Array数组)
        console.log(obj instanceof Object);//true(判断obj是否是Object的对象)

push(参数1):

        数组末尾添加一个或多个元素,会修改原数组 返回数组的新长度

  arr=['red','yellow','green','blue','orange']
        console.log(arr.push('black'));
        console.log(arr);

unshift(参数2):

        数组开头添加一个或多个元素,会修改原数组 返回数组的新长度

 arr=['red','yellow','green','blue','orange']
        console.log(arr.unshift('black'));
        console.log(arr);

pop():

        删除数组的最后一个元素,若是空数组则返回undefined,会修改原数组,返回删除的元素的值

arr=['red','yellow','green','blue','orange']
        console.log(arr.pop());
        console.log(arr);//orange

shift():

        删除数组的第一个元素,若是空数组则返回undefined,会修改原数组,返回第一个元素的值

arr=['red','yellow','green','blue','orange']
        console.log(arr.shift());
        console.log(arr);

2.筛选对象

[案例]要求在包含工资的数组中,剔除工资达到2000以上的数据, 把小于2000的数重新放到新的数组里面

var arr=[1500,1200,2000,2100,1800];
        var newArr=[];
        for(var i=0;i<arr.length;i++){
            if(arr[i]<2000){
                newArr.push(arr[i]);
            }
        }
        console.log(newArr);

3.筛选对象

reverse();

        颠倒数组中元素的位置,该方法会改变原数组,返回新数组

sort();

        对数组的元素进行排序,该方法会改变原数组,返回新数组

     (1) 升序排列:

var arr=[13,4,77,1,7];
        arr.sort(function(a,b){
            return a-b 
        })
        console.log(arr);

       (2) 降序排列

var arr=[13,4,77,1,7];
        arr.sort(function(a,b){
            return b-a 
        })
        console.log(arr);

3.数组索引

indexOf();

         返回数组中可以找到给定值的第一个索引,如果不存在则返回-1

arr=['red','yellow','green','blue','orange','yellow'];
         console.log(arr.indexOf('yellow'));
         console.log(arr.indexOf('yellow',2));

lastindexOf();

         返回指定元素在数组中的最后一个索引,如果不存在则返回-1

arr=['red','yellow','green','blue','orange','yellow'];
console.log(arr.lastIndexOf('yellow'));

案例需求

:要求在一组数据中,去除重复的元素

function unique(arr){
            var newArr=[];
            for(var i=0;i<arr.length;i++){
                if(newArr.indexOf(arr[i])===-1){
                    newArr.push(arr[i]);
                }
            }
            return newArr;
        }
        var demo=unique(['red','yellow','green','blue','orange','yellow']);
        console.log(demo);

4。数组转换为字符串

toString();

        把数组转换为字符串,逗号分隔每一项

var arr=['a','b','c'];
        console.log(arr.toString());//a,b,c

join('分隔符');

        将数组的所有元素连接到一个字符串中

console.log(arr.join());//a,b,c
        console.log(arr.join(''));//abc
        console.log(arr.join('-'));//a-b-c

fill();

        用一个固定的值填充数组中指定下标范围内的全部元素

var  arr1=[1,2,3,4];
        console.log(arr1.fill(0,2,4));//[1,2,0,0]用0覆盖从2~4的元素

splice();

        通过删除或替换现有元素或者原地添加新的元素来修改数组,返回被删除项目的新数组

var arr1=['red','yellow','blue','green'];
        console.log(arr1.splice(1,2));//返回被删除的元素('yellow','blue')
        arr1.splice(1,0,'black');
        console.log(arr1);//删除2个元素后 再添加元素black
        arr1.splice(1,0,'white','black');//删除2个元素后 再添加元素white,black

slice();

        数组截取,参数为slice(begin, end),包含 `begin`,但不包含 `end`

        返回被删除的元素,数组本身不会受到影响

var arr=['snow','rain','sun','cloud'];
        console.log(arr.slice(2));//截取sun之后的元素
        console.log(arr.slice(1,3));//截取1~3的元素不包括3

concat();

        连接两个或多个数组,不影响原数组,返回一个新数组

  var arr1=['a','b','c'];
        var arr2=[1,2,3];
        var arr3=arr1.concat(arr2);
        console.log(arr3);

字符串对象

1.字符串对象的使用

 用new String()来创建

var str = new String('apple');
        console.log(str);
        console.log(str.length);//获取字符串长度,输出结果为5
        
        var obj =new String('hello');
        console.log(typeof obj);//object
        console.log(obj instanceof String);//true
        var str='hello';
        console.log(typeof str);//Stirng
        console.log(str instanceof String);//false

2.根据数组返回位置

indexOf(searchValue)

        获取searchValue在字符串中首次出现的位置

var str='helloworld';
str.indexOf('o');//4

lastindexOf(searchValue)

        获取searchValue在字符串中最后出现的位置

var str='helloworld';
str.lastIndexOf('o');//5

实例:

var str='Hello World,Hello JavaScript';
        var index = str.indexOf('o');
        var num=0;
        while (index!=-1){
            console.log(index);         //依次输出:4,7,17
            index=str.indexOf('o',index+1);
            num++
        }
        console.log('o出现的次数是:'+num);

3.根据位置返回字符

charAt(index)

        获取index位置的字符,位置从0开始计算

var str='Apple';
console.log(str.charAt(3));     //l

charCode(index)

        获取index位置的字符的ASCII码

var str='Apple';
console.log(str.charCodeAt(0)); //65(字符A的ASCII代码是65)

str[index]

        获取指定位置处的字符(HTML5新增)

var str='Apple';
console.log(str[0]);            //A

[案例]统计出现最多次数的字符和次数

var str='apple';
        //第一步,统计每个字符的出现次数
        var o={};
        for(var i=0;i<str.length;i++){
            var chars=str.charAt(i);    //利用chars保存字符串中的每一个字符
            if(o[chars]){               //利用对象的属性来方便查找元素
                o[chars]++;
            }else{
                o[chars]=1;
            }
        }
        console.log(o);                 //{A:1,p:2,1:1,e:1}
        var max=0;                      //保存出现次数的最大值
        var ch='';                      //保存出现次数最多的字符
        for (var k in o){
            if(o[k]>max){
                max=o[k];
                ch=k;
            }
        }
        console.log('出现最多的字符是:'+ch+',共出现了'+max+'次');

4.字符串操作方法

concat(str1,str2,str3...)

        连接多个字符串

 var str='HelloWorld';
str.concat('!');    //HelloWorld!

slice(start,[end])

        截取从start位置到end位置之间的一个子字符串

var str='HelloWorld';
str.slice(1,3);     //el

substring(start,[end])

        截取从start位置到end位置之间的一个子字符串

 var str='HelloWorld';
 str.substring(5);   //World
 str.substring(5,7)  //Wo

substr(start,[end])

        截取从start位置到end位置之间的一个子字符串,基本和slice相同,但是不接受负值

 var str='HelloWorld';
 str.substr(5);      //World

toLowerCase()

        获取字符串的小写形式

var str='HelloWorld';
str.toLowerCase();  //helloworld

toUpperCase()

        获取字符串的大写形式

 var str='HelloWorld';
str.toUpperCase()   //HELLOWORLD

split([separator[,limit])

        使用separator分隔符将字符串分隔成数组,limit用于限制数量

var str='HelloWorld';
str.split('1');     //["He","","oWor","d"]

replace(str1,str2)

        使用str2替换字符串中的str1,返回替换结果,只会替换第一个字符

var str='HelloWorld';
str.replace('World','!');   //"Hello!"

【案例】判断用户名是否合法

在开发用户注册和登录功能时,经常需要对用户名进行格式验证。

 

本案例要求用户名长度在3-10范围内,不允许出现敏感词admin的任何大小写形式

var name=prompt('请输入用户名:');
        if(name.length<3 || name.length>10){
            alert('用户名长度必须在3~10之间。');
        }else if (name.toLowerCase().indexOf('admin')!==-1){
            alert('用户名中不能包含敏感词:admin。');
        }else{
            alert('恭喜您,该用户名可以使用');
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值