適用於小程式的 ES6

mili_bing發表於2019-03-08

一、codePointAt

JavaScript內部,字元以UTF-16的格式儲存,每個字元固定為2個位元組。對於那些需要4個位元組儲存的字元(Unicode碼點大於0xFFFF的字元),JavaScript會認為它們是兩個字元。

ES6新增了完全支援UTF-16的方法codePointAt(),該方法接受編碼單元的位置而非字元位置作為引數,返回與字串中給定位置對應的碼位,即一個整數值

var text = "?a" ;

console.log(text.charCodeAt(0)); // 55362
console.log(text.charCodeAt(1)); // 57271
console.log(text.charCodeAt(2)); // 97

console.log(text.codePointAt(0)); // 134071
console.log(text.codePointAt(1)); // 57271
console.log(text.codePointAt(2)); // 97複製程式碼

二、includes

1. indexOf用來查詢某個元素的位置,如果不存在就返回-1,但是不能判斷是否有NaN的元素。

2. Array.includes()函式判斷是否包含某一元素,返回 true / false,不能定位元素,但是能判斷 NaN。

const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN]
console.log('%s', arr1.indexOf(NaN)) // -1
console.log(arr1.includes('c')) // true
console.log(arr1.includes('z')) // false
console.log(arr1.includes(NaN))  // true複製程式碼

三、startsWith

1. 確定字串是否以指定字串的字元開頭,返回 true/false。注意:區分大小寫!

2. 接受兩個引數:

  第一個引數,要在此字串開頭搜尋的字元;

  第二個引數是指定從字串開始的位置,預設從零開始

 四、endsWith

1. 從字串的末尾開始查詢

五、repeat

1. 返回一個新字串,表示將原字串重複n次

let str1='a';
let str2=str1.repeat(3);
console.log(str2)//aaa複製程式碼

六、String.fromCodePoint

七、copyWithin

1. 用於操作當前陣列自身,用來把某些位置的元素複製並覆蓋到其他位置上去。

2. 該函式有三個引數:

  target:目的起始位置;

  start:複製源的起始位置,可以省略,可以是負數;

  end:複製源的結束位置,可以省略,可以是負數,實際結束位置是end-1。

3. 

const arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
arr1.copyWithin(1, 3, 6)
console.log('%s', JSON.stringify(arr1)) // [1,4,5,6,5,6,7,8,9,10,11]
複製程式碼

目標的位置不夠的,能覆蓋多少就覆蓋多少

const arr2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
arr2.copyWithin(3)
console.log('%s', JSON.stringify(arr2)) // [1,2,3,1,2,3,4,5,6,7,8]複製程式碼

start和end都可以是負數,負數表示從右邊數過來第幾個

const arr3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
arr3.copyWithin(3, -3, -2)
console.log(JSON.stringify(arr3)) // [1,2,3,9,5,6,7,8,9,10,11]複製程式碼

八、find

1. 查詢目標元素,找到就返回該元素,找不到返回undefined

const arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
var ret1 = arr1.find((value, index, arr) => { 
return value > 4
})
var ret2 = arr1.find((value, index, arr) => { 
return value > 14
})
console.log('%s', ret1) // 5
console.log('%s', ret2) // undefined複製程式碼

九、findIndex

1. 查詢目標元素,找到就返回元素的位置,找不到就返回-1

var ret3 = arr1.findIndex((value, index, arr) => { 
return value > 4
}) 
var ret4 = arr1.findIndex((value, index, arr) => { 
return value > 14
})
console.log('%s', ret3) // 4
console.log('%s', ret4) // -1複製程式碼

十、fill

1. 使用制定的元素填充陣列

2. 引數:

  value:填充值。

  start:填充起始位置,可以省略。

  end:填充結束位置,可以省略,實際結束位置是end-1。

const arr1 = [1, 2, 3, 4, 5]
arr1.fill(7)
console.log(arr1) // [7, 7, 7, 7, 7]複製程式碼

十一、entries(),keys()和values() —— 用於遍歷陣列

1. 區別是keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷

for (let index of ['a', 'b'].keys()) {
 console.log(index) // 0 1
}複製程式碼

十二、Array.from

1. 將物件轉換成陣列

2. 條件:

  1)部署了Iterator介面的物件,比如:Set,Map,Array

  2)類陣列物件,就是一個物件必須有length屬性,沒有length,轉出來的就是空陣列。

轉換map

適用於小程式的 ES6

轉換set

適用於小程式的 ES6

轉換字串

Array.from('hello world') // ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"]複製程式碼
Array.from('\u767d\u8272\u7684\u6d77') // ["白", "色", "的", "海"]複製程式碼

類陣列物件

Array.from({
  0: '0',
  1: '1',
  3: '3',
  length:4
}) 
// ["0", "1", undefined, "3"]複製程式碼
Array.from({
  0: 0,
  1: 1
})
// []複製程式碼

3. 引數:

 1)被轉換的的物件。

 2)map函式。

3)map函式中this指向的物件。

let diObj = {
  handle: function(n){
    return n + 2
  }
}
Array.from(
  [1, 2, 3, 4, 5], 
  function (x){
    return this.handle(x)
  }, 
  diObj
) // [3, 4, 5, 6, 7]複製程式碼

十三、Array.of

1. new Array()構造陣列的時候,是有二意性的

  構造時,傳一個引數,表示生成多大的陣列。

  構造時,傳多個引數,每個引數都是陣列的一個元素。

2.  將一個或多個值轉換成陣列 === new Array() 傳多個引數 的情況


相關文章