js(es6)基础知识复习看这个就够了~

js的基础知识

  • 数组
  • 字符串
  • 正则表达式
  • Symbol()

数组

增删

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(“这是一个描述”);也可以写一个描述字符串传给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类相关知识点

更新中…

你可能感兴趣的:(前端,es6)