分类 JS 下的文章 - 孙立亚笔记

JS

JS数组常用方法

一、数组定义

 数组是引用数据类型的对象数据类型(特殊的对象)。
 创建一个数组,需要开辟一个堆内存,以键值对的形式存储数组内容。
 数组属性名默认是数字。数字从零开始递增,表示当前是第几项,把这个数字称为”索引“。
 **数组是以数字为索引,索引从零开始递增的结构。**
 默认存在一个length属性,代表数组的长度,是可以动态调整的。 
 数组中的每一项可以保存任何类型的数据。
let arr = [
    1,
    '2',
    {
        id:'aaa',
        name:'我的名'
    },
    [4],
    function (){},
    Symbol(1),
    false
];

(1)arr[索引] 获取某一项,或操作它
(2)arr.length-1 数组最后一项
(3)arr[arr.length-1]=true; 修改数组最后一项的值
(4)arr.length=10;增加数组的长度,新增的每一项都会取得undefined值。length不是只读的
(5)arr[arr.length-1]初始化未定义值,默认是undefined
(6)delete arr[arr.length-1] 把数组当做普通对象来操作,键值可以删掉,但是length的长度不会改变
(7)arr.length-- 删除数组最后一项

数组是一个有序的,可以存储任何数据类型值的对象数据类型值。

二、学习重点
1、检查类型

console.log(arr instanceof Array); //=>true
console.log(Array.isArray(arr)); //=>true

instanceof 它假定只有一个全局执行环境
isArray 不管在哪个全局执行环境中创建的数组,都可以检测
2、操作方法要注意以下几点

  a.方法的作用
  b.params 参数(执行方法时传递的值)
  c.return 返回值(执行完成后返回的结果)
  d.执行完原数组是否修改,数组是对象数据类型的值,存储在堆内存中,所以要清楚其是否会变化。

三、常用方法
1、增删改
push 向数组的末尾添加一个或更多元素,并返回新的长度。
语法: array.push(item1, item2, ..., itemX)

arr.push({id:1,name:'sly'});

pop 删除数组的最后一个元素并返回删除的元素。
语法: array.pop()

arr.pop()

unshift 向数组的开头添加一个或更多元素,并返回新的长度。
语法:array.unshift(item1,item2, ..., itemX)

arr.unshift(6,[7,8]);

shift 删除并返回数组的第一个元素
语法: array.shift()

arr.shift()

splice 从数组中添加或删除元素
语法: array.splice(index,howmany,item1,.....,itemX)
howmany参数是选填,整数可为0,作用是从index后删除的个数,如果不填,则从index到最后

arr.splice(3,0,'a','c','e');
arr.splice(2,3,'b','f','h');

2、查询和拼接
slice 选取数组的的一部分,并返回一个新数组
语法:array.slice(start, end) 负数表示从结尾开始算

arr.slice(-3, -1); // 取倒数第二 倒数第三 
arr.slice(4,10); // 从第5个,取到第10个元素

concat 连接两个或更多的数组,并返回结果
语法:array.concat(array2,array3,...,arrayX)

var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var kai = ["Robin"];
var children = hege.concat(stale,kai); // ["Cecilie", "Lone", "Emil", "Tobias", "Linus", "Robin"]

3、转换为字符串
toString  把数组转换为字符串,并返回结果
语法:array.toString()  数组中的元素之间用逗号分隔
arr.toString();
join  把数组的所有元素放入一个字符串
语法:array.join(separator) 选填separator,用指定分隔符分开,默认为逗号
arr.join('|'); 
4、验证是否包含某一项
indexOf  搜索数组中的元素,并返回它所在的位置,如果没有搜索到则返回 -1
语法:array.indexOf(item,start)
arr.indexOf("Apple",4); // 从第五个元素开始查找 Apple
lastIndexOf 搜索数组中的元素,并返回它最后出现的位置,如果没有搜索到则返回 -1
语法:array.lastIndexOf(item,start)
arr.lastIndexOf('apple', 2);
includes 判断一个数组是否包含一个指定的值,返回布尔值
语法:array.includes(searchElement, fromIndex) fromIndex可选, 
arr.includes('apple');

5、排序
reverse、sort

6、迭代
forEach、map、filter、some、every

7、归并
reduce、reduceRight

常用正则表达式

手机号验证:

严格验证:/^1(3|4|5|7|8)\d{9}$/   宽松验证: /^1\d{10}$/

function checkPhone(){ 
    var phone = document.getElementById('phone').value;
    if(!(/^1(3|4|5|7|8)\d{9}$/.test(phone))){ 
        alert("手机号码有误,请重填");  
        return false; 
    } 
}
^1(3|4|5|7|8)\d{9}$
表示以1开头,第二位可能是3/4/5/7/8等的任意一个,在加上后面的\d表示数字[0-9]的9位,总共加起来11位结束。

固定电话号码验证:

function checkTel(){
    var tel = document.getElementById('tel').value;
    if(!/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(tel)){
    alert('固定电话有误,请重填');
    return false;
    }
}

邮箱号码验证:

function checkEmail(str){
    var re = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/
    if(re.test(str)){
        alert("正确");
    }else{
        alert("错误");
    }
}

身份证验证:

//身份证正则表达式(15位)
isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
//身份证正则表达式(18位)
isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
身份证正则合并:(^\d{15}$)|(^\d{17}([0-9]|X)$)

提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) = ('|")?(w|\|/|.)+('|"| *|>)?
提取信息中的邮件地址:w+([-+.]w+)@w+([-.]w+).w+([-.]w+)*
提取信息中的图片链接:(s|S)(r|R)(c|C) = ('|")?(w|\|/|.)+('|"| *|>)?
提取信息中的IP地址:(d+).(d+).(d+).(d+)
提取信息中的中国电话号码(包括移动和固定电话):((d{3,4})|d{3,4}-|s)?d{7,14}
提取信息中的中国邮政编码:[1-9]{1}(d+){5}
提取信息中的中国身份证号码:d{18}|d{15}
提取信息中的整数:d+
提取信息中的浮点数(即小数):(-?d*).?d+
提取信息中的任何数字 :(-?d*)(.d+)?
提取信息中的中文字符串:[u4e00-u9fa5]*
提取信息中的双字节字符串 (汉字):1*


  1. x00-xff