數組
增刪
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類相關知識點
更新中…