日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS标准内置对象 数组 的 34 个方法

發(fā)布時間:2023/12/14 javascript 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS标准内置对象 数组 的 34 个方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先放一個語雀的鏈接:

https://www.yuque.com/docs/share/13314a2f-05c0-4de6-8d61-8acd9e566ad4?# 《JS內置對象 Array》

1. at()接收一個整數值并返回該索引對應的元素

at() 方法接收一個整數值并返回該索引對應的元素,允許正數和負數。負整數從數組中的最后一個元素開始倒數。

at() 方法是通用的。其僅期望 this 具有 length 屬性和以整數為鍵的屬性。

const array1 = [5, 12, 8, 130, 44];let index = 2;console.log(`Using an index of ${index} the item returned is ${array1.at(index)}`); // expected output: "Using an index of 2 the item returned is 8"index = -2;console.log(`Using an index of ${index} item returned is ${array1.at(index)}`); // expected output: "Using an index of -2 item returned is 130"
  • 返回數組的最后一個值:
  • // 數組及數組元素 const cart = ['apple', 'banana', 'pear'];// 一個函數,用于返回給定數組的最后一個元素 function returnLast(arr) {return arr.at(-1); }// 獲取 'cart' 數組的最后一個元素 const item1 = returnLast(cart); console.log(item1); // 輸出:'pear'// 在 'cart' 數組中添加一個元素 cart.push('orange'); const item2 = returnLast(cart); console.log(item2); // 輸出:'orange'
  • 比較不同的數組方法
  • 這個示例比較了選擇 Array 中倒數第二個元素的不同方法。凸顯了 at() 方法的簡潔性和可讀性。

    // 數組及數組元素 const colors = ['red', 'green', 'blue'];// 使用長度屬性 const lengthWay = colors[colors.length-2]; console.log(lengthWay); // 輸出:'green'// 使用 slice() 方法。注意會返回一個數組 const sliceWay = colors.slice(-2, -1); console.log(sliceWay[0]); // 輸出:'green'// 使用 at() 方法 const atWay = colors.at(-2); console.log(atWay); // 輸出:'green'
  • 在非數組對象上調用 at( )
  • at() 方法讀取 this 的 length 屬性并計算需要訪問的索引。
  • const arrayLike = {length: 2,0: "a",1: "b", }; console.log(Array.prototype.at.call(arrayLike, -1)); // "b"

    2. concat()合并兩個或多個數組

    concat() 方法用于合并兩個或多個數組。此方法不會更改現有數組,而是返回一個新數組。

    舉例: const array1 = ['a', 'b', 'c']; const array2 = ['d', 'e', 'f']; const array3 = array1.concat(array2);console.log(array3); // expected output: Array ["a", "b", "c", "d", "e", "f"]語法: concat() concat(value0) concat(value0, value1) concat(value0, value1, /* … ,*/ valueN)參數 valueN 可選 數組和/或值,將被合并到一個新的數組中。如果省略了所有 valueN 參數, 則 concat 會返回調用此方法的現存數組的一個淺拷貝。

  • 合并嵌套數組:
  • const num1 = [[1]]; const num2 = [2, [3]];const numbers = num1.concat(num2);console.log(numbers); // results in [[1], 2, [3]]// 修改 num1 的第一個元素 num1[0].push(4);console.log(numbers); // results in [[1, 4], 2, [3]]

    3.copyWithin( ) 淺復制數組的一部分到同一數組中的另一個位置,并返回它

    copyWithin() 方法淺復制數組的一部分到同一數組中的另一個位置,并返回它,不會改變原數組的長度。copyWithin 函數被設計為通用式的,其不要求其 this 值必須是一個數組對象。

    const array1 = ['a', 'b', 'c', 'd', 'e'];// copy to index 0 the element at index 3 console.log(array1.copyWithin(0, 3, 4)); // expected output: Array ["d", "b", "c", "d", "e"]// copy to index 1 all elements from index 3 to the end console.log(array1.copyWithin(1, 3)); // expected output: Array ["d", "d", "e", "d", "e"]
  • 語法:
  • copyWithin(target)

    copyWithin(target, start)

    copyWithin(target, start, end)

  • 參數
  • target

    0 為基底的索引,復制序列到該位置。如果是負數,target 將從末尾開始計算。如果 target 大于等于 arr.length,將不會發(fā)生拷貝。如果 target 在 start 之后,復制的序列將被修改以符合 arr.length。

    start

    0 為基底的索引,開始復制元素的起始位置。如果是負數,start 將從末尾開始計算。如果 start 被忽略,copyWithin 將會從 0 開始復制。

    end

    0 為基底的索引,開始復制元素的結束位置。copyWithin 將會拷貝到該位置,但不包括 end 這個位置的元素。如果是負數, end 將從末尾開始計算。如果 end 被忽略,copyWithin 方法將會一直復制至數組結尾(默認為 arr.length)

  • 返回值: 改變后的數組。
  • 示例:
  • [1, 2, 3, 4, 5].copyWithin(-2) // [1, 2, 3, 1, 2] //從-2的位置開始復制,復制的對象為原數組[1, 2, 3, 4, 5].copyWithin(0, 3) // [4, 5, 3, 4, 5] //從0的位置開始復制,將下標為3的值復制到下標為0的地方[1, 2, 3, 4, 5].copyWithin(0, 3, 4) // [4, 2, 3, 4, 5][1, 2, 3, 4, 5].copyWithin(-2, -3, -1) // [1, 2, 3, 3, 4][].copyWithin.call({length: 5, 3: 1}, 0, 3); // {0: 1, 3: 1, length: 5}// ES2015 Typed Arrays are subclasses of Array var i32a = new Int32Array([1, 2, 3, 4, 5]);i32a.copyWithin(0, 2); // Int32Array [3, 4, 5, 4, 5]// On platforms that are not yet ES2015 compliant: [].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4); // Int32Array [4, 2, 3, 4, 5]

    4. entries( ) 返回一個新的數組迭代器對象

    entries() 方法返回一個新的數組迭代器對象,該對象包含數組中每個索引的鍵/值對。

    const array1 = ['a', 'b', 'c'];const iterator1 = array1.entries();console.log(iterator1.next().value); // expected output: Array [0, "a"]console.log(iterator1.next().value); // expected output: Array [1, "b"]
  • 迭代索引和元素
  • const a = ["a", "b", "c"];for (const [index, element] of a.entries()) {console.log(index, element); }// 0 'a' // 1 'b' // 2 'c'
  • 使用 for ... of循環(huán)
  • const array = ["a", "b", "c"]; const arrayEntries = array.entries();for (const element of arrayEntries) {console.log(element); }// [0, 'a'] // [1, 'b'] // [2, 'c']
  • 在非數組對象上調用 entries ()
  • entries() 方法讀取 this 的 length 屬性,然后訪問每個整數索引。

    const arrayLike = {length: 3,0: "a",1: "b",2: "c", }; for (const entry of Array.prototype.entries.call(arrayLike)) {console.log(entry); } // [ 0, 'a' ] // [ 1, 'b' ] // [ 2, 'c' ]

    5. every () 測試一個數組內的所有元素是否都能通過某個指定函數的測試。

    every() 方法測試一個數組內的所有元素是否都能通過某個指定函數的測試。它返回一個布爾值。若收到一個空數組,此方法在任何情況下都會返回 true。

    const isBelowThreshold = (currentValue) => currentValue < 40;const array1 = [1, 30, 39, 29, 10, 13];console.log(array1.every(isBelowThreshold)); // expected output: true
  • 語法
  • // 箭頭函數 every((element) => { /* … */ } ) every((element, index) => { /* … */ } ) every((element, index, array) => { /* … */ } )// 回調函數 every(callbackFn) every(callbackFn, thisArg)// 內聯回調函數 every(function(element) { /* … */ }) every(function(element, index) { /* … */ }) every(function(element, index, array){ /* … */ }) every(function(element, index, array) { /* … */ }, thisArg)參數: callback 用來測試每個元素的函數,它可以接收三個參數: element 用于測試的當前值。 index 用于測試的當前值的索引。 array 調用 every 的當前數組。
  • 示例:檢測所有數組元素的大小
  • 下例檢測數組中的所有元素是否都大于 10。function isBigEnough(element, index, array) {return element >= 10; } [12, 5, 8, 130, 44].every(isBigEnough); // false [12, 54, 18, 130, 44].every(isBigEnough); // true箭頭函數為上面的檢測過程提供了更簡短的語法。[12, 5, 8, 130, 44].every(x => x >= 10); // false [12, 54, 18, 130, 44].every(x => x >= 10); // true

    6. fill () 用一個固定值填充一個數組中從起始索引到終止索引內的全部元素。

    fill() 方法用一個固定值填充一個數組中從起始索引到終止索引內的全部元素。不包括終止索引。fill 方法故意被設計成通用方法,該方法不要求 this 是數組對象。當一個對象被傳遞給 fill 方法的時候,填充數組的是這個對象的引用。

    const array1 = [1, 2, 3, 4];// fill with 0 from position 2 until position 4 console.log(array1.fill(0, 2, 4)); // expected output: [1, 2, 0, 0]// fill with 5 from position 1 console.log(array1.fill(5, 1)); // expected output: [1, 5, 5, 5]console.log(array1.fill(6)); // expected output: [6, 6, 6, 6]語法: fill(value) fill(value, start) fill(value, start, end)參數:value 用來填充數組元素的值。 start 可選 起始索引,默認值為 0。 end 可選 終止索引,默認值為 arr.length。返回值: 修改后的數組。
  • 示例:
  • [1, 2, 3].fill(4); // [4, 4, 4] [1, 2, 3].fill(4, 1); // [1, 4, 4] [1, 2, 3].fill(4, 1, 2); // [1, 4, 3] [1, 2, 3].fill(4, 1, 1); // [1, 2, 3] [1, 2, 3].fill(4, 3, 3); // [1, 2, 3] [1, 2, 3].fill(4, -3, -2); // [4, 2, 3] [1, 2, 3].fill(4, NaN, NaN); // [1, 2, 3] [1, 2, 3].fill(4, 3, 5); // [1, 2, 3] Array(3).fill(4); // [4, 4, 4] [].fill.call({ length: 3 }, 4); // {0: 4, 1: 4, 2: 4, length: 3}// Objects by reference. const arr = Array(3).fill({}) // [{}, {}, {}]; // 需要注意如果 fill 的參數為引用類型,會導致都執(zhí)行同一個引用類型 // 如 arr[0] === arr[1] 為 true arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]

    7. filter () 創(chuàng)建給定數組一部分的淺拷貝,過濾數組。

    filter() 方法創(chuàng)建給定數組一部分的淺拷貝,其包含通過所提供函數實現的測試的所有元素。filter() 不會改變原數組,而是返回一個新數組。

    const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];const result = words.filter(word => word.length > 6);console.log(result); // expected output: Array ["exuberant", "destruction", "present"]
  • 語法:
  • // 箭頭函數 filter((element) => { /* … */ } ) filter((element, index) => { /* … */ } ) filter((element, index, array) => { /* … */ } )// 回調函數 filter(callbackFn) filter(callbackFn, thisArg)// 內聯回調函數 filter(function(element) { /* … */ }) filter(function(element, index) { /* … */ }) filter(function(element, index, array){ /* … */ }) filter(function(element, index, array) { /* … */ }, thisArg)參數: callbackFn 用來測試數組中每個元素的函數。返回 true 表示該元素通過測試,保留該元素,false 則不保留。它接受以下三個參數:element 數組中當前正在處理的元素。index 正在處理的元素在數組中的索引。array 調用了 filter() 的數組本身。返回值: 一個新的、由通過測試的元素組成的數組, 如果沒有任何數組元素通過測試,則返回空數組。

    示例

  • 篩選排除所有較小的值
  • 使用 filter() 創(chuàng)建了一個新數組,該數組的元素由原數組中值大于 10 的元素組成。

    function isBigEnough(value) {return value >= 10; }const filtered = [12, 5, 8, 130, 44].filter(isBigEnough); // filtered is [12, 130, 44]
  • 找出數組中所有的素數
  • const array = [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];function isPrime(num) {for (let i = 2; num > i; i++) {if (num % i === 0) {return false;}}return num > 1; }console.log(array.filter(isPrime)); // [2, 3, 5, 7, 11, 13]
  • 過濾 JSON 中的無效條目
  • 使用 filter() 創(chuàng)建具有非零 id 的元素的 json。
  • const arr = [{ id: 15 },{ id: -1 },{ id: 0 },{ id: 3 },{ id: 12.2 },{},{ id: null },{ id: NaN },{ id: 'undefined' }, ];let invalidEntries = 0;function filterByID(item) {if (Number.isFinite(item.id) && item.id !== 0) {return true;}invalidEntries++;return false; }const arrByID = arr.filter(filterByID);console.log('Filtered Array\n', arrByID); // 過濾后的數組 // [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]console.log('Number of Invalid Entries = ', invalidEntries); // Number of Invalid Entries = 5
  • 在數組中搜索
  • 使用 filter() 根據搜索條件來過濾數組內容。
  • const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];/*** 根據搜索條件(查詢)篩選數組項*/ function filterItems(arr, query) {return arr.filter((el) => el.toLowerCase().includes(query.toLowerCase())); }console.log(filterItems(fruits, 'ap')); // ['apple', 'grapes'] console.log(filterItems(fruits, 'an')); // ['banana', 'mango', 'orange']

    8. find () 返回數組中滿足提供的測試函數的第一個元素的值。

    find() 方法返回數組中滿足提供的測試函數的第一個元素的值。否則返回 undefined。find 方法不會改變數組。

    const array1 = [5, 12, 8, 130, 44];const found = array1.find(element => element > 10);console.log(found); // expected output: 12
    • 如果需要在數組中找到對應元素的索引,請使用 findIndex()。
    • 如果需要查找某個值的索引,請使用 Array.prototype.indexOf()。(它類似于 Array.prototype.indexOf(),但只是檢查每個元素是否與值相等,而不是使用測試函數。)
    • 如果需要查找數組中是否存在值,請使用 Array.prototype.includes()。同樣,它檢查每個元素是否與值相等,而不是使用測試函數。
    • 如果需要查找是否有元素滿足所提供的測試函數,請使用 Array.prototype.some()。

    語法:

    // 箭頭函數 find((element) => { /* … */ } ) find((element, index) => { /* … */ } ) find((element, index, array) => { /* … */ } )// 回調函數 find(callbackFn) find(callbackFn, thisArg)// 內聯回調函數 find(function(element) { /* … */ }) find(function(element, index) { /* … */ }) find(function(element, index, array){ /* … */ }) find(function(element, index, array) { /* … */ }, thisArg)參數: callbackFn 在數組每一項上執(zhí)行的函數,接收 3 個參數: element 當前遍歷到的元素。 index 當前遍歷到的索引。 array 數組本身。返回值: 數組中第一個滿足所提供測試函數的元素的值,否則返回 undefined。

    示例:

  • 用對象屬性查找數組里的對象
  • const inventory = [{name: 'apples', quantity: 2},{name: 'bananas', quantity: 0},{name: 'cherries', quantity: 5} ];function isCherries(fruit) {return fruit.name === 'cherries'; }console.log(inventory.find(isCherries)); // { name: 'cherries', quantity: 5 }
  • 使用箭頭函數和解構賦值
  • const inventory = [{name: 'apples', quantity: 2},{name: 'bananas', quantity: 0},{name: 'cherries', quantity: 5} ];const result = inventory.find(({ name }) => name === 'cherries');console.log(result) // { name: 'cherries', quantity: 5 }//不帶花括號
  • 尋找數組中的第一個質數
  • 如何從數組中尋找質數(如果找不到質數則返回 undefined)
  • function isPrime(element, index, array) {let start = 2;while (start <= Math.sqrt(element)) {if (element % start++ < 1) {return false;}}return element > 1; }console.log([4, 6, 8, 12].find(isPrime)); // undefined, not found console.log([4, 5, 8, 12].find(isPrime)); // 5

    9. findIndex () 數組中滿足提供的測試函數的第一個元素的索引。

    findIndex()方法返回數組中滿足提供的測試函數的第一個元素的索引。若沒有找到對應元素則返回 -1。

    const array1 = [5, 12, 8, 130, 44];const isLargeNumber = (element) => element > 13;console.log(array1.findIndex(isLargeNumber)); // expected output: 3

    10. findLast ()數組中滿足提供的測試函數條件的最后一個元素的值。

    findLast() 方法返回數組中滿足提供的測試函數條件的最后一個元素的值。如果沒有找到對應元素,則返回 undefined。

    const array1 = [5, 12, 50, 130, 44];const found = array1.findLast((element) => element > 45);console.log(found); // expected output: 130

    11. findLastIndex () 數組中滿足提供的測試函數的最后一個元素的索引。

    findLastIndex() 方法返回數組中滿足提供的測試函數條件的最后一個元素的索引。若沒有找到對應元素,則返回 -1。

    const array1 = [5, 12, 50, 130, 44];const isLargeNumber = (element) => element > 45;console.log(array1.findLastIndex(isLargeNumber)); // expected output: 3 (of element with value: 130)

    12. flat()按照一個可指定的深度遞歸遍歷數組,并返回新數組。

    flat() 方法會按照一個可指定的深度遞歸遍歷數組,并將所有元素與遍歷到的子數組中的元素合并為一個新數組返回。

    const arr1 = [0, 1, 2, [3, 4]];console.log(arr1.flat()); // expected output: [0, 1, 2, 3, 4]const arr2 = [0, 1, 2, [[[3, 4]]]];console.log(arr2.flat(2)); // expected output: [0, 1, 2, [3, 4]]

    語法:

    flat() flat(depth)參數: depth 可選 指定要提取嵌套數組的結構深度,默認值為 1。返回值: 一個包含將數組與子數組中所有元素的新數組。

    示例:

  • 扁平化嵌套數組
  • 使用 flat(Infinity),可展開任意深度的嵌套數組

    var arr1 = [1, 2, [3, 4]]; arr1.flat(); // [1, 2, 3, 4]var arr2 = [1, 2, [3, 4, [5, 6]]]; arr2.flat(); // [1, 2, 3, 4, [5, 6]]var arr3 = [1, 2, [3, 4, [5, 6]]]; arr3.flat(2); // [1, 2, 3, 4, 5, 6]//使用 Infinity,可展開任意深度的嵌套數組 var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]]; arr4.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  • 扁平化與數組空項
  • flat() 方法會移除數組中的空項:

    var arr4 = [1, 2, , 4, 5]; arr4.flat(); // [1, 2, 4, 5]

    13. flatMap () 使用映射函數映射每個元素,然后將結果壓縮成一個新數組。

    flatMap() 方法首先使用映射函數映射每個元素,然后將結果壓縮成一個新數組。它與 map 連著深度值為 1 的 flat 幾乎相同,但 flatMap 通常在合并成一種方法的效率稍微高一些。

    const arr1 = [1, 2, [3], [4, 5], 6, []];const flattened = arr1.flatMap(num => num);console.log(flattened); // expected output: Array [1, 2, 3, 4, 5, 6]

    示例:

  • map( ) 與 flatMap( )
  • var arr1 = [1, 2, 3, 4];arr1.map(x => [x * 2]); // [[2], [4], [6], [8]]arr1.flatMap(x => [x * 2]); // [2, 4, 6, 8]// only one level is flattened arr1.flatMap(x => [[x * 2]]); // [[2], [4], [6], [8]]

    14. forEach () 對數組的每個元素執(zhí)行一次給定的函數。

    forEach() 方法對數組的每個元素執(zhí)行一次給定的函數。

    const array1 = ['a', 'b', 'c'];array1.forEach(element => console.log(element));// expected output: "a" // expected output: "b" // expected output: "c"


    備注: 除了拋出異常以外,沒有辦法中止或跳出 forEach() 循環(huán)。如果你需要中止或跳出循環(huán),forEach() 方法不是應當使用的工具。

    若你需要提前終止循環(huán),你可以使用:

    • 一個簡單的 for 循環(huán)
    • for...of / for...in 循環(huán)
    • Array.prototype.every()
    • Array.prototype.some()
    • Array.prototype.find()
    • Array.prototype.findIndex()

    這些數組方法則可以對數組元素判斷,以便確定是否需要繼續(xù)遍歷:

    • every()
    • some()
    • find()
    • findIndex()

    譯者注:只要條件允許,也可以使用 filter() 提前過濾出需要遍歷的部分,再用 forEach() 處理。

    示例:

  • 不對未初始化的值做任何操作(稀疏數組)
  • const arraySparse = [1, 3, /* empty */, 7]; let numCallbackRuns = 0;arraySparse.forEach((element) => {console.log({ element });numCallbackRuns++; });console.log({ numCallbackRuns });// { element: 1 } // { element: 3 } // { element: 7 } // { numCallbackRuns: 3 }如圖,3 到 7 之間的缺失值沒有調用回調函數。
  • 將 for 循環(huán)轉換為 forEach
  • const items = ['item1', 'item2', 'item3']; const copyItems = [];// before for (let i = 0; i < items.length; i++) {copyItems.push(items[i]); }// after items.forEach((item) => {copyItems.push(item); });
  • 扁平化數組
  • const flatten = (arr) => {const result = [];arr.forEach((item) => {if (Array.isArray(item)) {result.push(...flatten(item));} else {result.push(item);}});return result; }// 使用 const nested = [1, 2, 3, [4, 5, [6, 7], 8, 9]]; console.log(flatten(nested)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

    15. from () 對一個類似數組或可迭代對象創(chuàng)建一個新的,淺拷貝的數組實例。 把非數組->數組。

    console.log(Array.from('foo')); // expected output: Array ["f", "o", "o"]console.log(Array.from([1, 2, 3], x => x + x)); // expected output: Array [2, 4, 6]

    語法:

    // 箭頭函數 Array.from(arrayLike, (element) => { /* … */ } ) Array.from(arrayLike, (element, index) => { /* … */ } )// 映射函數 Array.from(arrayLike, mapFn) Array.from(arrayLike, mapFn, thisArg)// 內聯映射函數 Array.from(arrayLike, function mapFn(element) { /* … */ }) Array.from(arrayLike, function mapFn(element, index) { /* … */ }) Array.from(arrayLike, function mapFn(element) { /* … */ }, thisArg) Array.from(arrayLike, function mapFn(element, index) { /* … */ }, thisArg)參數: arrayLike 想要轉換成數組的偽數組對象或可迭代對象。mapFn 可選 如果指定了該參數,新數組中的每個元素會執(zhí)行該回調函數。thisArg 可選 可選參數,執(zhí)行回調函數 mapFn 時 this 對象。返回值: 一個新的數組實例。

    示例:

  • 從String生成數組
  • Array.from('foo'); // [ "f", "o", "o" ]
  • 從Set生成數組
  • const set = new Set(['foo', 'bar', 'baz', 'foo']); Array.from(set); // [ "foo", "bar", "baz" ]
  • 從Map生成數組
  • const map = new Map([[1, 2], [2, 4], [4, 8]]); Array.from(map); // [[1, 2], [2, 4], [4, 8]]const mapper = new Map([['1', 'a'], ['2', 'b']]); Array.from(mapper.values()); // ['a', 'b'];Array.from(mapper.keys()); // ['1', '2'];
  • 從類數組對象(arguments)生成數組
  • function f() {return Array.from(arguments); }f(1, 2, 3);// [ 1, 2, 3 ]
  • 數組合并去重
  • function combine(){let arr = [].concat.apply([], arguments); //沒有去重復的新數組return Array.from(new Set(arr)); }var m = [1, 2, 2], n = [2,3,3]; console.log(combine(m,n)); // [1, 2, 3]

    16. includes() 判斷一個數組是否包含一個指定的值。

    includes() 方法用來判斷一個數組是否包含一個指定的值,根據情況,如果包含則返回 true,否則返回 false。使用 includes() 比較字符串和字符時是區(qū)分大小寫的。

    const array1 = [1, 2, 3];console.log(array1.includes(2)); // expected output: trueconst pets = ['cat', 'dog', 'bat'];console.log(pets.includes('cat')); // expected output: trueconsole.log(pets.includes('at')); // expected output: false

    語法:

    includes(searchElement) includes(searchElement, fromIndex)參數: searchElement 需要查找的元素值。fromIndex 可選 從fromIndex 索引處開始查找 searchElement。 如果為負值,則按升序從 array.length + fromIndex 的索引開始搜 (即使從末尾開始往前跳 fromIndex 的絕對值個索引,然后往后搜尋)。默認為 0。

    示例:

    [1, 2, 3].includes(2); // true [1, 2, 3].includes(4); // false [1, 2, 3].includes(3, 3); // false [1, 2, 3].includes(3, -1); // true [1, 2, NaN].includes(NaN); // true
  • 如果 fromIndex 大于等于數組的長度,則將直接返回 false,且不搜索該數組。
  • var arr = ['a', 'b', 'c'];arr.includes('c', 3); // false arr.includes('c', 100); // false
  • 計算出的索引小于 0
  • 如果 fromIndex 為負值,計算出的索引將作為開始搜索 searchElement 的位置。如果計算出的索引小于 0,則整個數組都會被搜索。
  • // array length is 3 // fromIndex is -100 // computed index is 3 + (-100) = -97var arr = ['a', 'b', 'c'];arr.includes('a', -100); // true arr.includes('b', -100); // true arr.includes('c', -100); // true arr.includes('a', -2); // false
  • 作為通用方法的 Includes ( )
  • includes() 方法有意設計為通用方法。它不要求this值是數組對象,所以它可以被用于其他類型的對象 (比如類數組對象)。下面的例子展示了 在函數的 arguments 對象上調用的 includes() 方法。
  • (function() {console.log([].includes.call(arguments, 'a')); // trueconsole.log([].includes.call(arguments, 'd')); // false })('a','b','c');

    17. indexOf() 返回在數組中可以找到給定元素的第一個索引。

    indexOf() 方法返回在數組中可以找到給定元素的第一個索引,如果不存在,則返回 -1。

    const beasts = ['ant', 'bison', 'camel', 'duck', 'bison'];console.log(beasts.indexOf('bison')); // expected output: 1// start from index 2 console.log(beasts.indexOf('bison', 2)); // expected output: 4console.log(beasts.indexOf('giraffe')); // expected output: -1

    語法:

    indexOf(searchElement) indexOf(searchElement, fromIndex)參數: searchElement 要查找的元素。 fromIndex 可選 開始查找的位置。如果該索引值大于或等于數組長度,意味著不會在數組里查找,返回 -1。如果參數中提供的索引值是一個負值,則將其作為數組末尾的一個抵消,即 -1 表示從最后一個元素開始查找,-2 表示從倒數第二個元素開始查找,以此類推。注意:如果參數中提供的索引值是一個負值,并不改變其查找順序,查找順序仍然是從前向后查詢數組。如果抵消后的索引值仍小于 0,則整個數組都將會被查詢。其默認值為 0。返回值: 首個被找到的元素在數組中的索引位置; 若沒有找到則返回 -1。

    示例:

  • 找出指定元素出現的所有位置
  • const indices = []; const array = ['a', 'b', 'a', 'c', 'a', 'd']; const element = 'a'; let idx = array.indexOf(element); while (idx !== -1) {indices.push(idx);idx = array.indexOf(element, idx + 1); } console.log(indices); // [0, 2, 4]
  • 判斷一個元素是否在數組里,不在則更新數組
  • function updateVegetablesCollection (veggies, veggie) {if (veggies.indexOf(veggie) === -1) {veggies.push(veggie);console.log(`New veggies collection is: ${veggies}`);} else {console.log(`${veggie} already exists in the veggies collection.`);} }const veggies = ['potato', 'tomato', 'chillies', 'green-pepper'];updateVegetablesCollection(veggies, 'spinach'); // New veggies collection is: potato,tomato,chillies,green-pepper,spinach updateVegetablesCollection(veggies, 'spinach'); // spinach already exists in the veggies collection.

    18. isArray() 用于確定傳遞的值是否是一個 Array。

    Array.isArray() 用于確定傳遞的值是否是一個數組。

    Array.isArray([1, 2, 3]); // true Array.isArray({foo: 123}); // false Array.isArray('foobar'); // false Array.isArray(undefined); // false

    語法:

    Array.isArray(value)參數: value 需要檢測的值。返回值: 如果值是 Array,則為 true;否則為 false。

    示例:

    // 下面的函數調用都返回 true Array.isArray([]); Array.isArray([1]); Array.isArray(new Array()); Array.isArray(new Array('a', 'b', 'c', 'd')) Array.isArray(new Array(3)); // 鮮為人知的事實:其實 Array.prototype 也是一個數組。 Array.isArray(Array.prototype);// 下面的函數調用都返回 false Array.isArray(); Array.isArray({}); Array.isArray(null); Array.isArray(undefined); Array.isArray(17); Array.isArray('Array'); Array.isArray(true); Array.isArray(false); Array.isArray(new Uint8Array(32)) Array.isArray({ __proto__: Array.prototype });

    19. join() 將一個數組的所有元素連接成一個字符串并返回這個字符串。

    join() 方法將一個數組(或一個類數組對象)的所有元素連接成一個字符串并返回這個字符串,用逗號或指定的分隔符字符串分隔。如果數組只有一個元素,那么將返回該元素而不使用分隔符。

    const elements = ['Fire', 'Air', 'Water'];console.log(elements.join()); // expected output: "Fire,Air,Water"console.log(elements.join('')); // expected output: "FireAirWater"console.log(elements.join('-')); // expected output: "Fire-Air-Water"

    語法:

    join() join(separator)參數: separator 可選 指定一個字符串來分隔數組的每個元素。如果需要,將分隔符轉換為字符串。如果省略,數組元素用逗號(,)分隔。如果 separator 是空字符串(""),則所有元素之間都沒有任何字符。返回值: 一個所有數組元素連接的字符串。如果 arr.length 為 0,則返回空字符串。

    示例:

  • 用四種不同的方式連接數組
  • const a = ['Wind', 'Water', 'Fire']; a.join(); // 'Wind,Water,Fire' a.join(', '); // 'Wind, Water, Fire' a.join(' + '); // 'Wind + Water + Fire' a.join(''); // 'WindWaterFire'
  • 在稀疏數組上使用 join()
  • join() 將空槽視為 undefined,并產生額外的分隔符:

    console.log([1, , 3].join()); // '1,,3' console.log([1, undefined, 3].join()); // '1,,3'
  • 在非數組對象上調用 join()
  • const arrayLike = {length: 3,0: 2,1: 3,2: 4, }; console.log(Array.prototype.join.call(arrayLike)); // 2,3,4 console.log(Array.prototype.join.call(arrayLike, ".")); // 2.3.4

    20. keys() 返回一個包含數組中每個索引鍵的 Array Iterator 對象。

    keys() 方法返回一個包含數組中每個索引鍵的 Array Iterator 對象。

    const array1 = ['a', 'b', 'c']; const iterator = array1.keys();for (const key of iterator) {console.log(key); }// expected output: 0 // expected output: 1 // expected output: 2

    語法:

    語法: keys()返回值: 一個新的 Array 迭代器對象。

    示例:

  • 索引迭代器會包含那些沒有對應元素的索引
  • var arr = ["a", , "c"]; var sparseKeys = Object.keys(arr); var denseKeys = [...arr.keys()]; console.log(sparseKeys); // ['0', '2'] console.log(denseKeys); // [0, 1, 2]

    21. lastIndexOf() 返回指定元素在數組中的最后一個的索引。

    lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或變量)在數組中的最后一個的索引,如果不存在則返回 -1。從數組的后面向前查找,從 fromIndex 處開始。

    const animals = ['Dodo', 'Tiger', 'Penguin', 'Dodo'];console.log(animals.lastIndexOf('Dodo')); // expected output: 3console.log(animals.lastIndexOf('Tiger')); // expected output: 1

    示例:

  • 查找所有元素:
  • 使用 lastIndexOf 查找到一個元素在數組中所有的索引(下標),并使用 push 將所有添加到另一個數組中。

    var indices = []; var array = ['a', 'b', 'a', 'c', 'a', 'd']; var element = 'a'; var idx = array.lastIndexOf(element);while (idx != -1) {indices.push(idx);idx = (idx > 0 ? array.lastIndexOf(element, idx - 1) : -1); }console.log(indices); // [4, 2, 0];

    22. map() 遍歷之后創(chuàng)建新數組。

    map() 方法創(chuàng)建一個新數組,這個新數組由原數組中的每個元素都調用一次提供的函數后的返回值組成。因為 map 生成一個新數組,當你不打算使用返回的新數組卻使用 map 是違背設計初衷的,請用 forEach 或者 for-of 替代。

    如果有以下情形,則不該使用 map:

    • 你不打算使用返回的新數組;或
    • 你沒有從回調函數中返回值。
    const array1 = [1, 4, 9, 16];// pass a function to map const map1 = array1.map(x => x * 2);console.log(map1); // expected output: Array [2, 8, 18, 32]

    示例:

  • 求數組中每個元素的平方根。
  • const numbers = [1, 4, 9]; const roots = numbers.map((item) => Math.sqrt(item));// roots 現在是 [1, 2, 3] // numbers 依舊是 [1, 4, 9]
  • 使用 map 重新格式化數組中的對象。
  • const kvArray = [{ key: 1, value: 10 },{ key: 2, value: 20 },{ key: 3, value: 30 }, ];const reformattedArray = kvArray.map(({ key, value}) => ({ [key]: value }));// reformattedArray 現在是 [{1: 10}, {2: 20}, {3: 30}],// kvArray 依然是: // [{key: 1, value: 10}, // {key: 2, value: 20}, // {key: 3, value: 30}]

    23. pop() 從數組中刪除最后一個元素,并返回該元素的值。

    pop() 方法從數組中刪除最后一個元素,并返回該元素的值。此方法會更改數組的長度。

    const plants = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];console.log(plants.pop()); // expected output: "tomato"console.log(plants); // expected output: Array ["broccoli", "cauliflower", "cabbage", "kale"]plants.pop();console.log(plants); // expected output: Array ["broccoli", "cauliflower", "cabbage"]

    語法:

    pop()返回值: 從數組中刪除的元素(當數組為空時返回undefined)。

    24. push() 將一個或多個元素添加到數組的末尾,并返回該數組的新長度。

    push() 方法將一個或多個元素添加到數組的末尾,并返回該數組的新長度。

    const animals = ['pigs', 'goats', 'sheep'];const count = animals.push('cows'); console.log(count); // expected output: 4 console.log(animals); // expected output: Array ["pigs", "goats", "sheep", "cows"]animals.push('chickens', 'cats', 'dogs'); console.log(animals); // expected output: Array ["pigs", "goats", "sheep", "cows", "chickens", "cats", "dogs"]

    語法:

    push(element0) push(element0, element1) push(element0, element1, /* … ,*/ elementN)參數: elementN 被添加到數組末尾的元素。返回值: 當調用該方法時,新的 length 屬性值將被返回。


    示例:

  • 添加元素到數組:
  • 下面的代碼創(chuàng)建了 sports 數組,包含兩個元素,然后又把兩個元素添加給它。total 變量為數組的新長度值。

    var sports = ["soccer", "baseball"]; var total = sports.push("football", "swimming");console.log(sports); // ["soccer", "baseball", "football", "swimming"]console.log(total); // 4
  • 合并兩個數組
  • var vegetables = ['parsnip', 'potato']; var moreVegs = ['celery', 'beetroot'];// 將第二個數組融合進第一個數組 // 相當于 vegetables.push('celery', 'beetroot'); Array.prototype.push.apply(vegetables, moreVegs);console.log(vegetables); // ['parsnip', 'potato', 'celery', 'beetroot']

    25. reduce() 迭代計算數組所有元素的總和。

    reduce() 方法對數組中的每個元素按序執(zhí)行一個由您提供的 reducer 函數,每一次運行 reducer 會將先前元素的計算結果作為參數傳入,最后將其結果匯總為單個返回值。

    第一次執(zhí)行回調函數時,不存在“上一次的計算結果”。如果需要回調函數從數組索引為 0 的元素開始執(zhí)行,則需要傳遞初始值。否則,數組索引為 0 的元素將被作為初始值 initialValue,迭代器將從第二個元素開始執(zhí)行(索引為 1 而不是 0)。

    const array1 = [1, 2, 3, 4];// 0 + 1 + 2 + 3 + 4 const initialValue = 0; const sumWithInitial = array1.reduce((previousValue, currentValue) => previousValue + currentValue,initialValue );console.log(sumWithInitial); // expected output: 10

    reducer 逐個遍歷數組元素,每一步都將當前元素的值與上一步的計算結果相加(上一步的計算結果是當前元素之前所有元素的總和)——直到沒有更多的元素被相加。

    語法:

    // 箭頭函數 reduce((previousValue, currentValue) => { /* … */ } ) reduce((previousValue, currentValue, currentIndex) => { /* … */ } ) reduce((previousValue, currentValue, currentIndex, array) => { /* … */ } )reduce((previousValue, currentValue) => { /* … */ } , initialValue) reduce((previousValue, currentValue, currentIndex) => { /* … */ } , initialValue) reduce((previousValue, currentValue, currentIndex, array) => { /* … */ }, initialValue)// 回調函數 reduce(callbackFn) reduce(callbackFn, initialValue)// 內聯回調函數 reduce(function(previousValue, currentValue) { /* … */ }) reduce(function(previousValue, currentValue, currentIndex) { /* … */ }) reduce(function(previousValue, currentValue, currentIndex, array) { /* … */ })reduce(function(previousValue, currentValue) { /* … */ }, initialValue) reduce(function(previousValue, currentValue, currentIndex) { /* … */ }, initialValue) reduce(function(previousValue, currentValue, currentIndex, array) { /* … */ }, initialValue)

    參數:

    callbackFn

    一個“reducer”函數,包含四個參數:

    • previousValue:上一次調用 callbackFn 時的返回值。在第一次調用時,若指定了初始值 initialValue,其值則為 initialValue,否則為數組索引為 0 的元素 array[0]。
    • currentValue:數組中正在處理的元素。在第一次調用時,若指定了初始值 initialValue,其值則為數組索引為 0 的元素 array[0],否則為 array[1]。
    • currentIndex:數組中正在處理的元素的索引。若指定了初始值 initialValue,則起始索引號為 0,否則從索引 1 起始。
    • array:用于遍歷的數組。

    initialValue 可選

    作為第一次調用 callback 函數時參數 previousValue 的值。若指定了初始值 initialValue,則 currentValue 則將使用數組第一個元素;否則 previousValue 將使用數組第一個元素,而 currentValue 將使用數組第二個元素。

    返回值:

    使用“reducer”回調函數遍歷整個數組后的結果。

    示例:
    1. 求數組所有值的和

    let sum = [0, 1, 2, 3].reduce(function (previousValue, currentValue) {return previousValue + currentValue }, 0) // sum is 6你也可以寫成箭頭函數的形式: let total = [ 0, 1, 2, 3 ].reduce(( previousValue, currentValue ) => previousValue + currentValue,0 )
  • 將二維數組轉化為一維數組
  • let flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(previousValue, currentValue) {return previousValue.concat(currentValue)},[] ) // flattened is [0, 1, 2, 3, 4, 5]你也可以寫成箭頭函數的形式: let flattened = [[0, 1], [2, 3], [4, 5]].reduce(( previousValue, currentValue ) => previousValue.concat(currentValue),[] )
  • 計算數組中每個元素出現的次數
  • let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']let countedNames = names.reduce(function (allNames, name) {if (name in allNames) {allNames[name]++}else {allNames[name] = 1}return allNames }, {}) // countedNames is: // { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }

    26. reverse() 將數組中元素的位置顛倒,并返回該數組。

    reverse() 方法將數組中元素的位置顛倒,并返回該數組。數組的第一個元素會變成最后一個,數組的最后一個元素變成第一個。該方法會改變原數組。

    const array1 = ['one', 'two', 'three']; console.log('array1:', array1); // expected output: "array1:" Array ["one", "two", "three"]const reversed = array1.reverse(); console.log('reversed:', reversed); // expected output: "reversed:" Array ["three", "two", "one"]// Careful: reverse is destructive -- it changes the original array. console.log('array1:', array1); // expected output: "array1:" Array ["three", "two", "one"]

    27. shift() 從數組中刪除第一個元素,并返回該元素的值。此方法更改數組的長度。

    shift() 方法從數組中刪除第一個元素,并返回該元素的值。此方法更改數組的長度。

    示例:

  • 移除數組中的一個元素
  • 以下代碼顯示了刪除其第一個元素之前和之后的 myFish 數組。它還顯示已刪除的元素:

    let myFish = ['angel', 'clown', 'mandarin', 'surgeon'];console.log('調用 shift 之前:' + myFish); // "調用 shift 之前:angel,clown,mandarin,surgeon"var shifted = myFish.shift();console.log('調用 shift 之后:' + myFish); // "調用 shift 之后:clown,mandarin,surgeon"console.log('被刪除的元素:' + shifted); // "被刪除的元素:angel"

    28. slice() 返回一個新的數組對象,原始數組不會被改變。

    slice() 方法返回一個新的數組對象,這一對象是一個由 begin 和 end 決定的原數組的淺拷貝(包括 begin,不包括end)。原始數組不會被改變。

    const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];console.log(animals.slice(2)); // expected output: Array ["camel", "duck", "elephant"]console.log(animals.slice(2, 4)); // expected output: Array ["camel", "duck"]console.log(animals.slice(1, 5)); // expected output: Array ["bison", "camel", "duck", "elephant"]console.log(animals.slice(-2)); // expected output: Array ["duck", "elephant"]console.log(animals.slice(2, -1)); // expected output: Array ["camel", "duck"]console.log(animals.slice()); // expected output: Array ["ant", "bison", "camel", "duck", "elephant"]


    語法:

    slice() slice(start) slice(start, end)begin 可選: 提取起始處的索引(從 0 開始),從該索引開始提取原數組元素。 如果該參數為負數,則表示從原數組中的倒數第幾個元素開始提取, slice(-2) 表示提取原數組中的倒數第二個元素到最后一個元素(包含最后一個元素)。 如果省略 begin,則 slice 從索引 0 開始。 如果 begin 超出原數組的索引范圍,則會返回空數組。end 可選: 提取終止處的索引(從 0 開始),在該索引處結束提取原數組元素。 slice 會提取原數組中索引從 begin 到 end 的所有元素(包含 begin,但不包含 end)。 slice(1,4) 會提取原數組中從第二個元素開始一直到第四個元素的所有元素 (索引為 1, 2, 3 的元素)。 如果該參數為負數,則它表示在原數組中的倒數第幾個元素結束抽取。 slice(-2,-1) 表示抽取了原數組中的倒數第二個元素到最后一個元素。 如果 end 被省略,則 slice 會一直提取到原數組末尾。 如果 end 大于數組的長度,slice 也會一直提取到原數組末尾。返回值: 一個含有被提取元素的新數組。

    29. some() 測試數組中是不是至少有 1 個元素通過了被提供的函數測試。

    some() 方法測試數組中是不是至少有 1 個元素通過了被提供的函數測試。它返回的是一個 Boolean 類型的值。如果用一個空數組進行測試,在任何情況下它返回的都是false。

    const array = [1, 2, 3, 4, 5];// checks whether an element is even const even = (element) => element % 2 === 0;console.log(array.some(even)); // expected output: true

    示例:

  • 判斷數組元素中是否存在某個值
  • var fruits = ['apple', 'banana', 'mango', 'guava'];function checkAvailability(arr, val) {return arr.some(function(arrVal) {return val === arrVal;}); }checkAvailability(fruits, 'kela'); // false checkAvailability(fruits, 'banana'); // true使用箭頭函數判斷數組元素中是否存在某個值: var fruits = ['apple', 'banana', 'mango', 'guava'];function checkAvailability(arr, val) {return arr.some(arrVal => val === arrVal); }checkAvailability(fruits, 'kela'); // false checkAvailability(fruits, 'banana'); // true

    30. sort() 排序,并返回數組。

    sort() 方法用原地算法對數組的元素進行排序,并返回數組。默認排序順序是在將元素轉換為字符串,然后比較它們的 UTF-16 代碼單元值序列時構建的。

    const months = ['March', 'Jan', 'Feb', 'Dec']; months.sort(); console.log(months); // expected output: Array ["Dec", "Feb", "Jan", "March"]const array1 = [1, 30, 4, 21, 100000]; array1.sort(); console.log(array1); // expected output: Array [1, 100000, 21, 30, 4]

    語法:

    // 無函數 sort()// 箭頭函數 sort((a, b) => { /* … */ } )// 比較函數 sort(compareFn)// 內聯比較函數 sort(function compareFn(a, b) { /* … */ })

    參數:

    compareFn 可選 用來指定按某種順序進行排列的函數。 如果省略,元素按照轉換為的字符串的各個字符的 Unicode 位點進行排序。a 第一個用于比較的元素。b 第二個用于比較的元素。描述: 如果指明了 compareFn ,那么數組會按照調用該函數的返回值排序。 即 a 和 b 是兩個將要被比較的元素:如果 compareFn(a, b) 大于 0,b 會被排列到 a 之前。 如果 compareFn(a, b) 小于 0,那么 a 會被排列到 b 之前; 如果 compareFn(a, b) 等于 0,a 和 b 的相對位置不變。

    要比較數字而非字符串,比較函數可以簡單的用 a 減 b,如下的函數將會將數組升序排列(如果它不包含 Infinity 和 NaN):

    function compareNumbers(a, b) {return a - b; }

    sort 方法可以使用 函數表達式 方便地書寫:

    const numbers = [4, 2, 5, 1, 3]; numbers.sort(function (a, b) {return a - b; }); console.log(numbers); // [1, 2, 3, 4, 5]// 或者const numbers2 = [4, 2, 5, 1, 3]; numbers2.sort((a, b) => a - b); console.log(numbers2); // [1, 2, 3, 4, 5]a-b -> 升序 b-a -> 降序

    31. splice() 通過刪除或替換現有元素或者原地添加新的元素來修改數組。

    splice() 方法通過刪除或替換現有元素或者原地添加新的元素來修改數組,并以數組形式返回被修改的內容。此方法會改變原數組。

    語法:

    splice(start) splice(start, deleteCount) splice(start, deleteCount, item1) splice(start, deleteCount, item1, item2, itemN)


    參數:

  • start
  • 指定修改的開始位置(從 0 計數)。如果超出了數組的長度,則從數組末尾開始添加內容;如果是負值,則表示從數組末位開始的第幾位(從 -1 計數,這意味著 -n 是倒數第 n 個元素并且等價于 array.length-n);如果負數的絕對值大于數組的長度,則表示開始位置為第 0 位。

  • deleteCount 可選
  • 整數,表示要移除的數組元素的個數。如果 deleteCount 大于 start 之后的元素的總數,則從 start 后面的元素都將被刪除(含第 start 位)。如果 deleteCount 被省略了,或者它的值大于等于array.length - start(也就是說,如果它大于或者等于start之后的所有元素的數量),那么start之后數組的所有元素都會被刪除。如果 deleteCount 是 0 或者負數,則不移除元素。這種情況下,至少應添加一個新元素。

  • item1, item2, ... 可選
  • 要添加進數組的元素,從start 位置開始。如果不指定,則 splice() 將只刪除數組元素。

    返回值:

    由被刪除的元素組成的一個數組。如果只刪除了一個元素,則返回只包含一個元素的數組。如果沒有刪除元素,則返回空數組。

    示例:

  • 從索引 2 的位置開始刪除 0 個元素,插入“drum”和 "guitar"
  • var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; var removed = myFish.splice(2, 0, 'drum', 'guitar');// 運算后的 myFish: ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"] // 被刪除的元素:[], 沒有元素被刪除
  • 從索引 2 的位置開始刪除所有元素
  • var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; var removed = myFish.splice(2);// 運算后的 myFish: ["angel", "clown"] // 被刪除的元素:["mandarin", "sturgeon"]

    32. toString() 返回一個字符串,表示指定的數組及其元素。

    toString() 方法返回一個字符串,表示指定的數組及其元素。

    const array1 = [1, 2, 'a', '1a'];console.log(array1.toString()); // expected output: "1,2,a,1a"

    語法:

    toString()返回值: 一個表示數組所有元素的字符串。

    33. unshift() 將一個或多個元素添加到數組的開頭,并返回該數組的新長度

    const array1 = [1, 2, 3];console.log(array1.unshift(4, 5)); // expected output: 5console.log(array1); // expected output: Array [4, 5, 1, 2, 3]

    示例:

    const arr = [1, 2];arr.unshift(0); // 調用的結果是 3,這是新的數組長度 // arr is [0, 1, 2]arr.unshift(-2, -1); // 新的數組長度為 5 // arr is [-2, -1, 0, 1, 2]arr.unshift([-4, -3]); // 新的數組長度為 6 // arr is [[-4, -3], -2, -1, 0, 1, 2]arr.unshift([-7, -6], [-5]); // 新的數組長度為 8 // arr is [ [-7, -6], [-5], [-4, -3], -2, -1, 0, 1, 2 ]

    34. values() 返回一個新的對象,該對象包含數組每個索引的值。

    values() 方法返回一個新的 Array Iterator 對象,該對象包含數組每個索引的值。

    const array1 = ['a', 'b', 'c']; const iterator = array1.values();for (const value of iterator) {console.log(value); }// expected output: "a" // expected output: "b" // expected output: "c"

    返回值:

    一個新的 Array 迭代對象。

    示例:

  • 使用 for ... of 循環(huán)進行迭代
  • const arr = ['a', 'b', 'c', 'd', 'e']; const iterator = arr.values();for (const letter of iterator) {console.log(letter); } //"a" "b" "c" "d" "e"

    總結

    以上是生活随笔為你收集整理的JS标准内置对象 数组 的 34 个方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    99产精品成人啪免费网站 | 亚洲视频1区2区 | 97色婷婷成人综合在线观看 | 欧美美女一级片 | 国产专区在线播放 | 亚洲欧美va | 日韩久久午夜一级啪啪 | 成人欧美一区二区三区在线观看 | 四虎最新域名 | 成人在线免费观看视视频 | 成 人 黄 色 视频 免费观看 | 日韩免费电影网 | 久久免费av电影 | 国产精品成久久久久三级 | 欧美日韩精品免费观看视频 | 九九日九九操 | 国产 视频 高清 免费 | 午夜天使 | 久久电影中文字幕视频 | 午夜影院日本 | 日韩精品在线看 | 日韩大片在线看 | 人人cao | 91网站观看 | 在线观看日韩视频 | 久久激情精品 | 91精品中文字幕 | 狠狠干婷婷 | 888av| 亚洲精品无 | 黄色日本片 | 91桃色在线播放 | 激情中文在线 | 91在线91拍拍在线91 | 国产精品久久久久久久久久东京 | 黄网站色欧美视频 | 中文字幕免费观看视频 | 久久九九精品 | 免费日韩在线 | 99久久日韩精品视频免费在线观看 | 高清不卡免费视频 | av一区二区三区在线 | 99精品久久久 | 亚洲黄色av一区 | 国产一区二区高清不卡 | 99久久999久久久精玫瑰 | 久久久久久麻豆 | 91影视成人| 亚洲免费成人av电影 | 99色亚洲| 91福利影院在线观看 | 欧美日韩一级视频 | 中文日韩在线视频 | 久久99国产精品免费 | 欧美一区二区日韩一区二区 | 色播五月激情综合网 | 一区二区三区播放 | 97av色| 中文字幕免费高 | 欧美精品久久久久久久亚洲调教 | 久久久久国产精品一区二区 | 精品久久久久国产 | 亚洲最新在线视频 | 久久综合天天 | 一区二区精品 | 9ⅰ精品久久久久久久久中文字幕 | 日本精品久久久一区二区三区 | 欧美99热 | 中文字幕人成不卡一区 | 成人欧美日韩国产 | 欧美精品九九 | 久久精品国产美女 | 99视频黄| 精品国产精品久久一区免费式 | www.久草视频| 久久久久免费视频 | 久久久久久免费视频 | 日韩乱码中文字幕 | 婷婷深爱 | 国产一级高清视频 | 亚洲欧美国产精品18p | 国产护士hd高朝护士1 | av免费片 | 激情五月五月婷婷 | 久热香蕉视频 | av大全在线观看 | 精品久久久久久综合 | 2019中文在线观看 | 久久久久综合精品福利啪啪 | 免费看v片网站 | 天天爱天天干天天爽 | 香蕉影视在线观看 | 久爱综合| 91麻豆精品 | 91九色视频 | 激情开心色| 在线影院 国内精品 | 国产精品永久免费观看 | 最新av电影网站 | 四虎影视成人精品国库在线观看 | 97久久精品午夜一区二区 | 一区二区三区在线免费播放 | 久久久精品电影 | 欧美一区二区在线刺激视频 | 久99久在线视频 | 一区二区高清在线 | 欧美精品久久久久久久久免 | 正在播放国产精品 | 色网av| 午夜精品久久久久久久99无限制 | 国产a级免费| 狠狠狠操| 五月婷婷丁香在线观看 | ww视频在线观看 | 四季av综合网站 | 欧美性超爽 | 天天天天色综合 | 欧美 亚洲 另类 激情 另类 | 免费无遮挡动漫网站 | 菠萝菠萝在线精品视频 | 五月天免费网站 | 成人国产精品免费观看 | 亚洲欧洲精品在线 | 在线中文字母电影观看 | 91视频91色| 亚洲在线观看av | 免费网站在线观看人 | 手机在线看永久av片免费 | 免费在线观看av | 免费视频你懂得 | 激情 婷婷| 最近最新中文字幕 | 日韩精品视频免费专区在线播放 | 日韩在线观看免费 | 麻豆影视在线免费观看 | 亚洲视频www| av免费观看高清 | 五月天色中色 | 亚洲欧美日韩精品久久久 | 玖玖玖精品 | 日韩大片在线免费观看 | 日本一区二区三区免费看 | 久久精品3 | 久久人91精品久久久久久不卡 | 91在线日本 | 蜜臀av一区二区 | 欧美日韩在线观看一区二区三区 | a级国产乱理论片在线观看 特级毛片在线观看 | 在线精品视频免费播放 | 综合色播| 日韩视频www | 波多野结衣在线观看一区 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久伊人国产精品 | 国产精品免费久久久久久久久久中文 | 国产精品黄色 | 九九热视频在线免费观看 | 欧美成人xxx| 久久精品视频4 | 亚洲欧美精品一区 | 免费福利片2019潦草影视午夜 | 国产中文字幕视频在线观看 | 国产精品毛片久久久久久 | 国产精品嫩草影院99网站 | 成人久久18免费网站图片 | 日韩精品久久久久久久电影99爱 | 91视频免费 | 天天干天天操av | 四季av综合网站 | 欧美精品一区二区三区一线天视频 | 99爱视频| 免费精品国产 | 三级av免费 | 成人av网站在线 | 午夜91在线 | 日本深夜福利视频 | 狠狠色丁香婷婷综合最新地址 | 香蕉久久久久久av成人 | 国产最新福利 | 99热官网| 日本在线h | 欧美成人精品欧美一级乱黄 | www.狠狠操.com | 天天艹天天操 | 亚洲国内精品在线 | 色综合天天 | 天天人人综合 | 成人日韩av| 日本99久久 | 国产午夜av | 操操碰| 国产亚洲精品久久久网站好莱 | 91成人精品 | 天天操夜夜操夜夜操 | 麻豆免费观看视频 | 久久精品直播 | 亚洲视频分类 | 久久观看最新视频 | 欧美91av | 亚洲精品美女在线观看播放 | 激情视频综合网 | 香蕉久久久久久久 | 天天干天天看 | 99视频 | 一区三区视频 | 日日爽夜夜操 | 日韩欧美视频免费在线观看 | 亚洲综合在线五月 | 91在线永久 | 日韩视频免费 | 国产美腿白丝袜足在线av | 五月天综合在线 | 粉嫩av一区二区三区免费 | 中文字幕一区二区三区四区视频 | a在线观看视频 | 91av资源在线 | 蜜桃av观看 | 国产精品 9999 | 欧美激情精品久久 | 国产护士在线 | 国产精品欧美 | 欧美在线观看禁18 | 97视频在线观看播放 | 久久久免费观看完整版 | 久草网在线 | 黄色成人影视 | 毛片网在线播放 | 国内精品久久久久影院一蜜桃 | 欧美精品免费一区二区 | 亚洲综合色激情五月 | 叶爱av在线 | www.夜夜爽| 深爱婷婷激情 | 99久久99久国产黄毛片 | 9ⅰ精品久久久久久久久中文字幕 | 精品国产一区二区三区久久久久久 | 日韩在线观看你懂的 | 91视频下载 | 人人爽人人爽人人爽人人爽 | 欧美性免费| 99久久精品国产网站 | 亚洲资源在线网 | 亚洲色图av | 欧美少妇影院 | 外国av网| 久综合网| 成人黄色片在线播放 | 中文字幕制服丝袜av久久 | 日韩精品一区二区三区电影 | 欧美 日韩 视频 | 亚洲一区 av | 精品a在线 | 国产黄| 日韩偷拍精品 | 欧美精品一区二区蜜臀亚洲 | 日本中文一级片 | 高清av免费看 | 日日夜夜天天 | 国产高清免费av | 亚洲区色 | 国产一区二区精品 | 亚洲精品视频免费 | 日韩成人在线免费观看 | 日韩精品视频在线观看免费 | 中文字幕高清视频 | 99国产精品一区二区 | 毛片无卡免费无播放器 | 少妇bbw撒尿 | 欧美激情综合网 | 久久久久久久久免费 | 国产精品九九视频 | 国产小视频在线免费观看 | 国产精品久久久久久久久久久免费看 | 激情视频在线高清看 | 国产精品成人在线观看 | 国产精品成人久久久久久久 | 久久成人毛片 | 欧美日韩亚洲精品在线 | 黄色小网站免费看 | 亚洲天堂免费视频 | av再线观看 | 又黄又刺激的视频 | 日韩四虎| 国产精品18毛片一区二区 | 国产精品久久久久久久久久三级 | 亚洲欧美日韩精品久久奇米一区 | 婷婷激情小说网 | 日韩欧美aaa | 91香蕉久久 | 久草视频在 | 天天爱天天操天天爽 | 五月天av在线 | 国产香蕉视频在线播放 | 草久久av| 91亚色免费视频 | 日韩在线视频网站 | 国产视频在线一区二区 | 99久久精品无免国产免费 | 久草网站在线观看 | 日韩在线三级 | 91麻豆免费看 | 国产在线高清精品 | 91丝袜美腿 | 99精品国产99久久久久久97 | 成人小视频在线观看免费 | 插久久| 美女久久久久久久久久久 | 日韩视频中文 | 成人亚洲精品久久久久 | 国产一级二级在线观看 | 日韩大片在线观看 | 我要看黄色一级片 | 精品国产一区二区三区久久久蜜臀 | 中文字幕在线观看免费观看 | 欧美91av| 美女精品久久久 | 91精品综合在线观看 | 中文字幕视频在线播放 | 免费在线国产 | 2021国产精品视频 | 国产精品永久免费在线 | 99这里都是精品 | 在线视频一区二区 | 国产精品成人一区二区 | 天天操,夜夜操 | 国产又粗又长又硬免费视频 | 国产高清专区 | 99亚洲精品视频 | 黄色一集片 | 国产精品av电影 | 狠狠干综合 | 久久免费视频在线观看6 | 久久av福利 | 国内精品久久久久国产 | 亚洲自拍偷拍色图 | 日日操日日 | 亚洲精品88欧美一区二区 | 国产精品久久久久久久电影 | 中文字幕在线视频第一页 | 麻豆视频一区二区 | 三级av在线免费观看 | 三级视频国产 | 狠狠操导航| 日韩在线一二三区 | 91久久国产露脸精品国产闺蜜 | 亚洲国产视频a | 日韩高清国产精品 | 深夜国产福利 | 日韩精品免费在线观看 | 国产精品手机播放 | 亚洲高清在线 | 伊人国产在线播放 | 最新日韩在线 | 亚洲精品久久久久www | 国产伦精品一区二区三区照片91 | av在线直接看 | 国产精品白浆 | 日韩色视频在线观看 | 韩国av永久免费 | 九九久久国产精品 | 91av蜜桃 | 国产精品久久久久久久久久久杏吧 | 精品一区 在线 | 深爱开心激情 | 日韩激情网 | 国产一区 在线播放 | 五月婷网站 | 欧美成人在线免费 | 亚洲精品美女在线 | 国产精品免费观看在线 | 最新精品国产 | 中文字幕国产精品一区二区 | 久久久久久久99精品免费观看 | 日韩av中文在线观看 | 欧美日韩国产精品一区二区亚洲 | www视频在线播放 | 亚洲国产欧美一区二区三区丁香婷 | 国产午夜精品一区二区三区 | 天天爱天天操天天射 | 国产成人在线看 | 国产精品18久久久久久久 | 69av久久 | 亚洲女同ⅹxx女同tv | 国产看片免费 | 天天综合91 | 久久er99热精品一区二区三区 | 日韩三级av | 日本久久91| 美女网站在线看 | 成年人免费看的视频 | av天天色| 国产精品女同一区二区三区久久夜 | 日韩国产精品毛片 | 岛国大片免费视频 | 91豆麻精品91久久久久久 | 草免费视频 | 成年人视频免费在线播放 | 国产精品视频不卡 | 国产高清久久久 | 97小视频| 国产精品成人a免费观看 | 黄在线免费看 | 久久精品99北条麻妃 | 日韩电影在线视频 | 久久久九色精品国产一区二区三区 | 欧美在线视频一区二区三区 | 国产高清不卡一区二区三区 | 亚洲精品高清一区二区三区四区 | 亚洲香蕉在线观看 | 欧美在线aaa | 欧美日韩国产精品一区二区三区 | 日韩av手机在线观看 | 日日夜夜操操操操 | 最新极品jizzhd欧美 | 黄色小视频在线观看免费 | freejavvideo日本免费 | 九九视频在线观看视频6 | 亚洲影院一区 | 久久久久久久久爱 | 天堂av观看| 欧美日韩视频在线一区 | 五月精品 | 久热免费在线 | 日韩超碰在线 | 亚洲传媒在线 | 日韩欧美xxx | 最近日本韩国中文字幕 | 国产亚洲午夜高清国产拍精品 | 久久免费福利 | www.午夜 | 蜜桃av久久久亚洲精品 | 久久久久久久国产精品 | 精品二区视频 | 国产成人精品久 | 久久一区二区三区超碰国产精品 | 毛片区 | 黄色在线观看免费网站 | 日韩精品久久一区二区 | 国产99自拍 | 日本精品久久久久影院 | 色婷五月天 | 欧美精品一区在线 | 国产一区二区在线免费观看 | 国产精品青青 | 久草视频免费在线播放 | 中文字幕亚洲综合久久五月天色无吗'' | 久草在线免费看视频 | 婷婷激情五月 | 天天操天天摸天天爽 | 97日日碰人人模人人澡分享吧 | 日韩精品视频网站 | 久久久2o19精品 | 国产美女视频免费 | 天天干人人干 | 免费影视大全推荐 | 丁香婷婷综合激情 | 丁香综合 | 久久精品免费电影 | 亚洲成人中文在线 | 国产成人精品一区二区在线观看 | 天天鲁天天干天天射 | 久久草草影视免费网 | 麻豆91网站| 在线观看亚洲国产 | 伊人宗合网 | 综合网av| 亚洲精品国产品国语在线 | 91亚洲精品乱码久久久久久蜜桃 | 精品国产aⅴ麻豆 | 91免费国产在线观看 | 人人干,人人爽 | 国产精品久久精品 | 欧洲av在线 | 亚洲精品在线免费播放 | 国产精品欧美久久 | 一区二区三区 中文字幕 | 在线观看av麻豆 | 四虎在线永久免费观看 | 久草香蕉在线 | 五月开心婷婷网 | 91人人人 | 国产日韩精品久久 | 亚洲黄色区 | 米奇狠狠狠888 | 欧美一级电影片 | 久久激情小说 | 精品久久久久久国产偷窥 | 国产视频一区二区在线播放 | 日韩av午夜 | 日韩videos高潮hd| 中文字幕亚洲字幕 | 亚洲成av人影片在线观看 | 日韩免费一级a毛片在线播放一级 | 97视频免费观看2区 亚洲视屏 | 狠狠躁18三区二区一区ai明星 | 精品免费观看 | 日韩欧美99 | 久久免费视频精品 | 国产不卡在线播放 | 九九在线视频免费观看 | 日韩小视频 | 国产主播99| a级黄色片视频 | 美女视频黄在线观看 | 青青草国产免费 | 99热在线免费观看 | 国产精品美女在线 | 天天综合五月天 | 日韩在线观看的 | 久草在线这里只有精品 | 蜜桃视频日本 | 国产人成看黄久久久久久久久 | 99精品在线观看 | 欧美成人a在线 | 主播av在线 | 日批在线看| 欧洲av不卡| 深爱婷婷网 | 九九视频网 | 久久av一区二区三区亚洲 | 国产高清一区二区 | 日韩高清在线一区二区 | 日韩成人一级大片 | 成人国产网址 | av一级片| av大片免费看 | 国产精品va在线观看入 | 国产中年夫妇高潮精品视频 | 日韩欧美高清一区二区 | 久操免费视频 | 欧美亚洲另类在线视频 | 国产一级在线播放 | 少妇bbb搡bbbb搡bbbb | 天天摸天天操天天爽 | 高清不卡毛片 | 久久综合久久综合这里只有精品 | 天天·日日日干 | 麻豆一区在线观看 | 国产福利精品在线观看 | 国产精品一区二区62 | 欧美一进一出抽搐大尺度视频 | 91影视成人 | 99视频精品免费观看, | 一区二区精品 | 黄色大全在线观看 | 午夜久久久精品 | 日韩一区精品 | 精品国产大片 | 国产在线久久久 | 国产第一页福利影院 | 成人免费视频网址 | 亚洲经典中文字幕 | 日批网站在线观看 | 亚洲电影av在线 | 日日爱网站 | 国产精品成人aaaaa网站 | 又湿又紧又大又爽a视频国产 | 国产精品不卡一区 | 国产美女精品人人做人人爽 | 欧美日韩三级在线观看 | 国产婷婷精品 | 国产手机av在线 | 99视频在线免费 | 欧美韩国在线 | 99久国产 | av一级在线| 黄a网站| 91激情视频在线 | 亚洲人人射 | 丁香婷婷色月天 | 九九久久免费 | 中文字幕欧美日韩va免费视频 | 91中文字幕在线视频 | 超碰在线观看av.com | 91桃色在线播放 | 综合激情婷婷 | 亚洲精品自拍视频在线观看 | 日本黄色一级电影 | 亚洲国产精品第一区二区 | 91在线视频播放 | 狠狠狠色丁香综合久久天下网 | 亚洲精品久久久蜜桃直播 | 欧美久久久久久久久久 | 久久精品成人 | 久久久久久久网 | 婷婷中文在线 | av成人在线播放 | 欧美日韩一区二区在线 | 中文字幕中文字幕在线中文字幕三区 | 免费色视频 | 夜夜操狠狠操 | 久久久91精品国产一区二区三区 | 欧美大片www| 五月婷婷毛片 | 国产在线91在线电影 | 国产精品欧美日韩在线观看 | av在线一级 | 黄色a一级视频 | 国产精品嫩草在线 | 911免费视频 | 丁香婷婷久久久综合精品国产 | 欧美日韩18 | 激情综合亚洲 | 六月激情婷婷 | 久久永久视频 | 青春草视频 | 网站在线观看日韩 | 亚洲精品高清一区二区三区四区 | 在线看片一区 | 欧美性色黄 | 99久久精品一区二区成人 | 色九九视频 | 精品欧美一区二区精品久久 | 天天操夜夜操国产精品 | 91喷水| 九九国产视频 | 国产超碰97 | 欧美一区二区三区在线 | 亚洲精品视频偷拍 | 免费看三级黄色片 | 人人插人人插 | 成人久久久久久久久 | 99av国产精品欲麻豆 | 国产高清久久久 | 国产精品美乳一区二区免费 | 一区二区精品在线 | 少妇视频一区 | 国产人成在线视频 | 麻豆免费视频网站 | www日韩在线观看 | 亚洲综合网站在线观看 | 天天操夜操 | 日韩精品视频第一页 | 国产精品露脸在线 | 伊人伊成久久人综合网小说 | 久久久久久久久网站 | 亚洲视频久久久 | 国产资源免费在线观看 | 欧美一区二区三区特黄 | 91精品国产综合久久福利不卡 | 久爱综合| 在线 国产一区 | 精品福利网 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 成年人在线播放视频 | 久久精品99国产国产 | 久久在线电影 | 久久久久久久久久影院 | 国产日韩三级 | 欧美激情h | 日日碰狠狠躁久久躁综合网 | 久草在线免费看视频 | 女人魂免费观看 | 九九精品毛片 | 久久99热这里只有精品 | 国产精品永久免费观看 | 在线免费黄网站 | 日韩在线免费视频观看 | 99久热在线精品视频观看 | 久久黄色影院 | 欧美色综合天天久久综合精品 | 91麻豆精品91久久久久同性 | 久久久久网址 | 干天天 | 中文字幕免费观看全部电影 | 六月丁香在线观看 | 国产黄色片免费 | 中文字幕网站视频在线 | 999国产在线 | 中文字幕电影高清在线观看 | 欧洲亚洲女同hd | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产精品一区二区视频 | 国产成人精品一区二三区 | 国产黄a三级 | 中文字幕一区二区三区四区 | 成人一区在线观看 | 国产精品久久电影观看 | 激情视频一区二区三区 | 精品一区二区三区香蕉蜜桃 | 中文字幕免费在线看 | av黄色亚洲 | 国产精品久久久久一区二区 | 国产精品美女久久久久久2018 | 久久精品精品电影网 | aaa毛片视频| 7777xxxx| 九九交易行官网 | 91av视屏 | 中文字幕在线观看免费高清电影 | 精品久操| www黄色软件 | 亚洲少妇激情 | 在线91观看| 成人国产精品av | www.久久精品视频 | 国产日韩欧美在线一区 | 久久激情片 | 国产精品一区二区久久精品爱涩 | 色偷偷人人澡久久超碰69 | 久久国产精品影视 | 国产精品麻豆99久久久久久 | 午夜精品久久久99热福利 | 美女网站色 | 精品久久久久久亚洲综合网 | 三级av片| 又黄又爽又湿又无遮挡的在线视频 | 日韩中文字幕a | 色先锋资源网 | 午夜精品一区二区国产 | 成人精品福利 | 欧美日韩三区二区 | 亚洲精品男女 | 97精产国品一二三产区在线 | 免费看十八岁美女 | 国产精品网红福利 | 国产精品99久久久久久小说 | 手机看片中文字幕 | 久久久久免费精品视频 | 91精品在线播放 | 久久免费视频8 | 中文字幕在线观看网站 | aⅴ精品av导航 | 五月婷婷久 | 亚洲美女视频在线观看 | 在线免费看片 | japanesexxx乱女另类 | 久综合网| 又爽又黄在线观看 | www在线观看国产 | 亚洲天天做 | 97视频在线| 亚洲国产成人久久综合 | 国产精品ssss在线亚洲 | a资源在线| www色婷婷com| 91禁看片 | 51久久成人国产精品麻豆 | 91av99| 成年人在线观看网站 | 黄色毛片视频免费观看中文 | 色福利网站| 粉嫩aⅴ一区二区三区 | 久久精品一区八戒影视 | 人人看人人做人人澡 | 国产精品原创 | 免费在线激情电影 | 精品不卡av| 精品一区二区久久久久久久网站 | 最近中文字幕高清字幕免费mv | 亚洲天堂精品视频在线观看 | 玖玖在线免费视频 | 在线观看中文字幕2021 | 特级毛片网站 | 91av在线视频免费观看 | 九色精品 | 天天插天天色 | av在线播放中文字幕 | 永久免费视频国产 | 一区电影 | 超碰97国产在线 | 五月婷婷激情网 | 天天综合网天天综合色 | 99在线精品视频在线观看 | 国产精品久久久av久久久 | 国产一级黄 | 九草视频在线 | 亚洲电影网站 | 亚洲日本韩国一区二区 | 六月丁香在线视频 | 亚洲一区二区91 | 成人免费在线视频 | 欧美伦理一区二区三区 | 免费a v视频 | 国产精品免费视频久久久 | 久久精品激情 | 亚洲国产精品人久久电影 | 天天操天 | 国产精品自产拍在线观看蜜 | 人人爽人人爽人人 | 色视频网站免费观看 | 日韩av手机在线看 | 日韩亚洲国产中文字幕 | 999毛片| 成人9ⅰ免费影视网站 | 欧美超碰在线 | 国产第一页在线播放 | 日本中文不卡 | 碰超人人 | 96亚洲精品久久久蜜桃 | 国产精品综合在线观看 | 国产精品久久久久久久久久白浆 | 亚洲一区在线看 | 美女网站视频免费都是黄 | 欧美成人亚洲成人 | 99精品热视频只有精品10 | 在线观看中文字幕亚洲 | av日韩av | 久久久综合九色合综国产精品 | 日日日天天天 | 欧美一级免费片 | 久久夜夜操 | 精品亚洲免费视频 | 久久精品人人做人人综合老师 | www.天天射.com | 国产精品成人免费精品自在线观看 | 黄色大片入口 | 欧美三级高清 | 日韩中文在线观看 | 欧美日韩高清一区 | 美女视频久久久 | 久久无码av一区二区三区电影网 | 女人18毛片90分钟 | bbbbb女女女女女bbbbb国产 | 伊人婷婷| 国产欧美在线一区 | 91成人在线视频观看 | 一区二区三区三区在线 | 狠狠色丁香婷婷综合最新地址 | 91av视频导航 | 成人免费网视频 | 国产大陆亚洲精品国产 | 伊人天天狠天天添日日拍 | 在线之家免费在线观看电影 | 亚洲综合涩 | 在线观看91网站 | 在线天堂中文在线资源网 | 久久国产麻豆 | 成人毛片一区二区三区 | 精品999久久久 | av免费看网站| 麻豆综合网 | 亚洲精品白浆高清久久久久久 | 青青河边草手机免费 | 黄色最新网址 | 亚洲97在线| 在线影视 一区 二区 三区 | 婷婷激情五月综合 | 亚洲国产电影在线观看 | 亚洲永久精品视频 | 最近中文字幕视频网 | 天天做日日做天天爽视频免费 | 狠狠成人 | 黄色天堂在线观看 | 一级性生活片 | 91社区国产高清 | 精品国产一区二区三区免费 | 免费看国产视频 | 天天干天天操天天爱 | 在线精品视频在线观看高清 | 欧美日韩国产精品久久 | 日本中文字幕观看 | 激情婷婷综合网 | 最近中文字幕大全 | 香蕉视频久久 | 国产中年夫妇高潮精品视频 | 菠萝菠萝蜜在线播放 | 最新国产精品视频 | 草久视频在线观看 | 久久五月婷婷丁香 | 99久久精品无码一区二区毛片 | 五月天.com | 国产午夜三级 | 久久 在线 | 99精品在线播放 | 人人爽久久涩噜噜噜网站 | 91视频 - x99av| 亚洲首页 | 一区二区精 | 99精品视频在线免费观看 | 成人av在线直播 | 经典三级一区 | 久久av网址 | 久久精品女人毛片国产 | 99国产一区二区三精品乱码 | 中国老女人日b | 国产成人av一区二区三区在线观看 | 久久艹综合 | 日韩91精品 | 亚洲伊人婷婷 | 九九热免费视频在线观看 | 九色福利视频 | 国产精品永久久久久久久www | 激情久久久久久久久久久久久久久久 | 久久成人综合视频 | 在线国产不卡 | 香蕉久久久久 | 色视频在线观看 | 免费99精品国产自在在线 | 中国一级片在线 | 日韩大片在线观看 | 国产精品视频在线看 | 国产精品一区二区三区免费视频 | 亚洲精品字幕 | 成人在线观看影院 | 日本不卡久久 | 欧美午夜剧场 | 日韩经典一区二区三区 | 中文字幕在线观看第三页 | 日韩欧美一区二区三区在线观看 | 夜夜夜 | 久久久首页 | 在线观看福利网站 | 1024久久 | 91丨九色丨首页 | 99精品视频在线观看视频 | 亚洲精品美女在线观看 | 久久精品1区 | 中文久草 | 久久国产欧美日韩 | 日韩在线网址 | 亚洲欧美成人在线 | av福利超碰网站 | 日本性xxx | 国色天香第二季 | 久久精品欧美日韩精品 | 高清在线一区二区 | 麻花豆传媒mv在线观看网站 | 午夜视频在线瓜伦 | 人人爱人人射 | 中文字幕在线久一本久 | 成人资源在线观看 | 国产日韩精品一区二区三区在线 | 国产一区私人高清影院 | 黄色电影小说 | 涩五月婷婷 | 日日日日干 | 久久精品aaa | 91精品国产综合久久福利 | 精品久久久久久久久久久久久久久久 | 久草视频99| 国产精品成人一区二区 | 婷婷国产在线观看 | 91视频在线 | 午夜精品电影一区二区在线 | 91丨九色丨蝌蚪丰满 | 久久艹人人 | 在线看日韩 | 欧美成人一二区 | 天天操天天操天天操天天操 | av888av.com | 成人精品国产免费网站 | 91在线日韩 | 亚洲在线免费视频 | 97超碰国产精品女人人人爽 | 亚洲国产大片 | 亚洲欧美国产视频 | 久久国产综合视频 | 日韩高清 一区 | 99热免费在线 | 国产黄色免费观看 | 国产精品 9999 | 久久久黄色免费网站 | 久久久久久在线观看 | 丁香高清视频在线看看 | 玖玖在线视频观看 | 精品国产1区2区3区 国产欧美精品在线观看 | 在线99热| 国产高清视频在线观看 | 国产精品婷婷 | 国产人成一区二区三区影院 | 日韩精品一区二区久久 | 日韩欧美精品在线观看视频 | 国产精品av在线 | 国产精品免费在线 | 日韩三级中文字幕 | 久久久国产成人 | 亚洲国产精品一区二区久久,亚洲午夜 | 国产高清精品在线观看 | 狠狠的操狠狠的干 | 日韩性网站| 国产一级免费观看视频 | 色综合婷婷 | 免费久久网站 | 久久久精品视频网站 | 免费在线黄 | 成人91在线| 91在线播放国产 | 久久夜色精品国产欧美乱 | 国产精品99久久久久久武松影视 | 欧美日韩高清一区二区 | 一色av | 91成人黄色 | 色婷婷综合久久久久 | 国产日韩精品一区二区三区在线 | 欧美aaa视频 | 高清久久久 | 操操操日日 | 欧美性生交大片免网 | 久久国产精品精品国产色婷婷 | 日韩视频一二三区 | 日本99热 | 国产精品1区2区 | 丁香视频全集免费观看 | 色瓜| 五月婷社区 | 97国产大学生情侣酒店的特点 | 亚洲欧美怡红院 |