增删
push 向数组的末尾添加一个或者多个数据,
返回新数组长度
var len = arr.push(1,2,3);
pop 删除数组最后一项返回该项的值
var lastValue = arr.pop();
unshift 向数组的首位添加一个或者多个数据,
返回新数组长度
var len = arr.unshift(1,2,3);
shift 删除数组第一项返回该项的值
var firstValue = arr.shift();
连接
var newArr = arr1.concat(arr2);
反转
var newArr=arr.reverse();
排序
var newArr=arr.sort();//正序
var newArr=arr.sort((a,b)=>b-a);//逆序
裁切
var newArr=arr.slice(1);
/*从1的位置截取到最后,
如果指定第二个参数,
则截取两参数中间的部分*/
var newArr=arr.splice(0,1,"first","second")//
/*第一个参数是要删除位置的开始,
第二个要删除的项数,
后面的参数要添加的项,
添加的位置为删除位置的后面*/
迭代
以下方法接收的函数有3个参数,项的值,项的位置,数组本身
every()
//返回布尔值,运行给定函数若每一项都为true,则返回true
some()
//返回布尔值,运行给定函数,若有一项为true,则返回true
filter()
//返回数组,运行给定函数,返回满足条件的项组成的数组
forEach()
//无返回值遍,运行给定函数,迭代数组的每一项
归并
以下方法接收2个参数,
函数(前一个,当前,索引,数组对象),
作为归并基础的初始值
reduce()//从个数组第一项开始,遍历每一项
var sum = arr.reduce((pre,cur)=>pre+cur,0);
//sum为数组每一项的和
若第二个参数指定为,则上面的sum=sum+1
字符方法
let str = "hello world"
var num = str.charAt(4)
//接收一个参数返回此位置的字符 num ="o"
var ch = str.charCodeAt(1)
//接收一个参数返回此位置字符的字符编码 num = 101
操作方法
/*接收一个或者两个参数,
返回基于旧字符串的新字符串
如果未指定第二给参数则会截取到最后*/
slice()
//第一个参数为开始位置,第二个为结束位置
substr()
//第一个参数为开始位置,第二个返回的字符个数
substring()
//第一个参数为开始位置,第二个为结束位置
//传入负数的情况:
slice()
//会将负数与字符串长度相加,
substr()
//第一个负数和字符串长度相加,第二个变为0,
substring()
//将负数全部转化为0
位置方法
/*搜索子字符串在原字符串中的位置,
找到返回下标,找不到返回-1
接收一个或者2个参数,
第一个为子字符串,第二个为开始查找的位置*/
let str = "hello world"
var num = str.indexOf("o",0)//num=4
lastIndexOf() //从后面向前查找
trim()方法
该方法会去掉字符串前后的空格
let str = " hello world "
var newStr = str.trim();//newStr = "hello world"
大小写转化方法
let str = "Hello World"
alert(str.toLowerCase())//"hello world"
alert(str.toUpperCase())//"HELLO WORLD"
//不知道地区可以使用稳妥的办法 t
//oLocaleLowerCase()和toLocaleUpperCase()方法进行大小写转化
模式匹配方法
将在介绍正则时详细讨论
字符串的比较方法
/*如果字符串的字母表应该排在字符串参数之前返回-1,之后返回1,相等返回0
逐个字符进行比较,字符相同则继续比较下一个字符*/
let str = "hello world"
alert(str.localeCompare("blue")); //1
alert(str.localeCompare("if")); //-1
alert(str.localeCompare("hello world")); //0
字符边界
边界符 | 解释 |
---|---|
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
字符列表
元字符 | 解释 |
---|---|
\d | 数字 |
\D | 非数字 |
\w | 字母数字下划线 |
\W | 非字母数字下划线 |
\s | 空白符 |
\S | 非空白符 |
. | 除换行外所有字符 |
模式修饰
修饰符 | 解释 |
---|---|
i | 不区分大小写 |
g | 全局匹配 |
m | 多行匹配 |
s | 单行匹配 |
原子表
原子表 | 解释 |
---|---|
[] | 匹配其中一个字符 |
[^] | 除了其中的任意一个字符 |
[0-9] | 数字等同于/d |
[a-z] | 小写字母 |
[a-Z] | 大小写字母 |
重复匹配
符号 | 解释 |
---|---|
* | 0次或多次 |
+ | 一次或多次 |
? | 0次或1次 |
{n} | n次 |
{n,} | 最少n次 |
{n,m} | n次到m次 |
禁止贪婪
符号 | 解释 |
---|---|
*? | 0次或多次,减少重复 |
+? | 一次或多次,减少重复 |
?? | 0次或1次,减少重复 |
{n,}? | n次以上,减少重复 |
{n,m}? | n次到m次,减少重复 |
字符串的方法
let str = "hello"
alert(str.search("llo"))//2
alert(str.match("llo")[0])//llo
match方法返回的是一个数组
正则方法
let str = "hello"
alert(/h/.text(str))//true
alert(/h/.exec(str))//
//使用g模式可以循环调用直到匹配完,匹配不到返回null
明天写几个正则例子…
一个简单的邮箱匹配例子
let reg = /^[\w-]+@[\w-]+(\.(com|cn|google|163)){1,2}$/i
console.log(reg.test("[email protected]"));//true
字母数字下划线开头一个或多个@字母数字下划线一个或多个(.com/cn)一个或2个结束
Symbol会生成一个独一无二的数据,用Symbol生成的数据永远不会重复/
Symbol(“这是一个描述”);也可以写一个描述字符串传给symbol
let a=Symbol();
let b=Symbol();
console.log(a==b);//false
我们有以下需求,2个人名字一样,我用他们的名字作为为标识存在一个对象中,
let name1="orange";
let name2 = "orange";
let us = {
[name1]: { title: "user1 is orange" },
[name2]: { title: "user2 is orange" }
};
us对象中name2的数据将会覆盖掉name1的数据,因为他们的键相同,使用Symbol会解决上面的问题
let user1 = {
name: "橘子",
des: "user1是个橘子",
key: Symbol(),
};
let user2 = {
name: "橘子",
des: "user2也是个橘子",
key: Symbol(),
};
let user = {
[user1.key]: { title: "user1 is orange" },
[user2.key]: { title: "user2 is orange" },
};
key内容由symbol生成,所以不会出现上面的覆盖现象。
明天更新class类相关知识点
更新中…