javaScript学习笔记(六) 「数组」、「字符串」

一、数组ES5新增的方法

ES5新增数组的方法:

1.forEach()

作用:遍历数组类似for循环

返回值:无

语法:arr.forEach(function(item,index,arr){})

item: 每一个元素

index:每一个元素对应的下标

arr:数组本身,可选,可删除

    // forEach: 遍历数组:没有返回值
    var arr = [12, 4, 21, 56];
    arr.forEach(function (item, index) {
        // console.log(item,index);
        console.log(arr[index]); //可以
    })

2.map()

作用:遍历数组

返回值:新数组,给原数组的元素进行一些处理(变为原来的两倍)一下,

语法:arr.map(function(item,index,arr){returnitem*3})

item: 每一个元素

index:每一个元素对应的下标

arr:数组本身,可选,可删除

    // map:遍历数组 返回一个映射后的数组
    var arr = [12, 4, 21, 5];
    var res = arr.map(function (item, index) {
        return item * 2;
    })
        console.log(res);

3.filter()

作用:过滤数组中满足某个条件的元素

返回值:过滤后的元素

语法:arr.filter(function(item,index,arr){returnitem>10})

item: 每一个元素

index:每一个元素对应的下标

arr:数组本身,可选,可删除

    // filter(): 底层其实也在遍历,以数组返回过滤后的元素
    var arr = [12, 4, 21, 5];
    var res = arr.filter(function(item,index){
         return item>10;
    })
    console.log(res);

4.some() ||

作用:检测数组中是否含有满足条件的元素,

返回值:布尔类型,有一个满足条件就返回true

都不满足条件的返回false

语法:arr.some(function(item,index,arr){returnitem>10})

    // some(): 检测数组中是否含满足条件的元素,有一个就返回true
    var arr = [12, 4, 21, 5];
    var flag =  arr.some(function(item,index){
         return item>20;
    })
    console.log(flag);

5.every() &&

作用:检测数组中是否每一个元素都满足条件的元素,

返回值:布尔类型,全部都满足条件就返回true

有一个不满足条件的返回false

语法:arr.every(function(item,index,arr){return item>10})

    // every(): 检测数组中元素是否全部满足条件满足条件的元素,全部满足就返回true,有一个不满足就是false
    var arr = [12, 4, 21, 5];
    var flag =  arr.every(function(item,index){
         return item>20; //--->结果false
        //  return item>2; //---->结果true
    })
    console.log(flag);//false

二、基本数据类型和引用数据类型

基本数据类型.

1.基本数据类型的变量存储的是值

2.基本数据类型的值存储在栈内存

3. 变量和变量存储的值互不影响

引用数据类型

1. 引用数据类行的变量存储的地址值

2. 引用数据类型的值存储在堆内存

3. 如果两个变量引用相同的地址值,指向堆内存的具体实体

三、字符串的定义和创建

1、var str=‘亲’;

基本类型(两者本质其实一样),定义一个字符串变量str,内容为‘亲’

2、var str = new String(“hello”); 引用类型,定义一个字符串变量str,内容为hello,

注意此刻str为object(对象)类型,用new产生的变量都是引用类型的变量,也叫对象。

var s1 = "string";

var s2 = new String("string");

console.log(typeof(s1)); //输出的是 string

console.log(typeof(s2)); //输出的 object

四、字符串的长度&遍历字符串&字符的特点

字符串长度:str.length


    var str= 'abcdggs';
    console.log(str.length);//字符串的长度

遍历字符串:for循环和for in循环

    // 遍历字符串
    for(var i =0;i<=str.length-1;i++){
        console.log(str[i]);
    }

字符串特点ECMAScript 中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变 某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。

  1. var lang = "Java";
  2. lang = lang +"script"

五、字符串常见API和属性

// 都不会改变原来的字符串

var str = 'sdfghjkl';

1.charAt()

含义:查找下标对应的字符

语法:str.charAt(索引)

返回值:下标对应的字符

    var str = 'abcdefg'
    console.log(str.charAt(2));//根据下标找元素
    console.log(str[2]);//根据下标找元素

2.charCodeAt(): ASCII表:

含义:查找下标对应的字符的ASCII表中的码值

语法:str.charCodeAt(索引)

返回值:下标对应的字符对应的码值

3.concat()

含义:拼接字符串(+)

语法:str.concat(str)

返回值:新的字符串


    var str = 'ab&cdn';
    var newarr = str.split('&');
    console.log(newarr);//['ab','cdn']

4.indexOf()

含义:查找字符首次出现的下标位置

语法:str.indexOf('a')

返回值:下标位置 找不到-1

    var str = 'abcdcefgh'
    console.log(str.indexOf('c')); //2

5.toLowerCase()/toUpperCase()

含义:toLowerCase()转小写

toUpperCase()转大写

语法:str.toLowerCase()

语法:str.toUpperCase()

返回值:转换后的结果

6.split():

含义:将字符串转为数组

语法:str.split('分割符')

返回值:分割后的数组

    var str = 'a-b-c-d-e';//
    var newstr = str.split('-');//分割后变成数组

    console.log(newstr);// ['a', 'b', 'c', 'd', 'e']

// 下面三个截取字符串

7.substr()

语法:str.substr(开始下标,截取长度)

含义:截取字符串

返回值:截取出来的字符串

8.slice()

语法:str.slice(开始下标,结束下标)

含义:截取字符串

返回值:截取出来的字符串(包左不包右)

9.substring() 不标准写法

语法:str.substring(开始下标,结束下标)

含义:截取字符串

返回值:截取出来的字符串(包左不包右)

10.replace() 替换

语法: str.replace(substr,newstr)

含义: 将str中首次出现的substr替换成newstr(后面讲正则的时候会让说到替换全部时)



    var str = '张三你是sb,不好意思不想跟你说话';
    //    var str1 = str.replace('sb',"*");//产生了一个替换后的字符串,存储到str1变量中
    str = str.replace('sb', "*");//产生了一个替换后的字符串,存储到str1变量中
    console.log(str);

六、ASCII码表

计算机存储数据都是以二进制的形式存储的,二进制转为十进制,所以每个字符和十进制数有了一一对应的关系。

就是一个标准,把每个字符与一个0-255的数字对应起来,这样就可以把字符变为数字,而后变为二进制码了。

var str1 = "b";

document.write(str1.charCodeAt());

13--->回车

32--->space

48--->字符0

65--->A

97--->a

输入一个字符串,统计字符串中有多少个大写字母,小写字母,数字,空格,其他字符

var str = "12a45bcAAB+#$%^";

var count1 = 0;

var count2 = 0;

var count3 = 0;

var count4 = 0;

for(vari=0; i<str.length; i++){

if(str.charAt(i) >= 'A' && str.charAt(i)<='Z'){

count1++;

}elseif(str.charAt(i) >= 'a' && str.charAt(i)<='z'){

count2++;

}elseif(str.charAt(i) >= '0' && str.charAt(i)<='9'){

count3++;

}else{

count4++;

}

}

console.log(count1,count2,count3,count4);

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值