久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      經(jīng)典技巧之JavaScript數(shù)組操作(整理分享)

      本篇文章給大家?guī)砹岁P(guān)于JavaScript中數(shù)組的相關(guān)操作,主要包括Array對象原型方法以及常用操作去重、扁平化、排序等,希望對大家有幫助。

      經(jīng)典技巧之JavaScript數(shù)組操作(整理分享)

      JavasScript數(shù)組操作, 主要包括Array對象原型方法以及常用操作去重、扁平化、排序等

      Array.prototype

      forEach

      arr.forEach(callback(currentValue [, index [, array]])[, thisArg])

      • callback為數(shù)組中每個(gè)元素執(zhí)行的函數(shù), 該函數(shù)接收一至三個(gè)參數(shù)

      • currentValue數(shù)組中正在處理等當(dāng)前元素的索引

      • array可選[表示正在操作的數(shù)組]

      • thisArg可選[當(dāng)執(zhí)行回調(diào)函數(shù)時(shí), 用作this的值, 當(dāng)使用箭頭函數(shù)時(shí)此參數(shù)將被忽略]

      forEach()對數(shù)組的每一個(gè)元素執(zhí)行一次給定的函數(shù)

      let arr = [1, 2, 3, 4, 5]; let obj = {a: 1}; arr.forEach(function(currentValue, index, array) {   console.log("當(dāng)前值:", currentValue);// 1   console.log("當(dāng)前值索引:", index);// 0   console.log("當(dāng)前處理數(shù)組:", array); // (5)[1, 2, 3, 4, 5]   console.log("當(dāng)前this指向:", this);// {a: 1}   console.log("結(jié)束一次回調(diào), 無需返回值");   console.log(""); }, obj); console.log(arr);// [1, 2, 3, 4, 5]不改變原數(shù)組

      map

      arr.map(callback(currentValue [, index [, array]])[, thisArg])

      • callback為數(shù)組每個(gè)元素執(zhí)行的函數(shù), 該函數(shù)接收一至三個(gè)參數(shù)

      • currentValue數(shù)組中正在處理的當(dāng)前元素

      • index可選[數(shù)組中正在處理的當(dāng)前元素的索引]

      • array可選[正在操作的數(shù)組]

      • thisArg可選[當(dāng)執(zhí)行回調(diào)函數(shù)時(shí), 用作this的值, 當(dāng)使用箭頭函數(shù)時(shí)此函數(shù)將被忽略]

      map()創(chuàng)建一個(gè)新數(shù)組, 其結(jié)果是該數(shù)組中的每個(gè)元素都被調(diào)用一次提供的函數(shù)后的返回值

      let arr = [1, 2, 3, 4, 5]; let obj = {a: 1}; let newArr = arr.map(function(currentValue, index, array) {   console.log("當(dāng)前值:", currentValue);// 1   console.log("當(dāng)前值索引:", index);// 0   console.log("當(dāng)前處理數(shù)組:", array); // (5)[1, 2, 3, 4, 5]   console.log("當(dāng)前this指向: ", this); // {a: 1}   console.log("");   return crrentValue + 10; }, obj); console.log(newArr);// [11, 12, 13, 14, 15] console.log(arr);// [1, 2, 3, 4, 5]不改變原數(shù)組

      push

      arr.push(element1[,…, elementN])

      elementN被添加到數(shù)組末尾的元素

      push()將一個(gè)或多個(gè)元素添加到數(shù)組的末尾, 并返回該數(shù)組的長度

      let arr = ['a', 'b', 'c', 'd', 'e']; console.log(arr.push('f', 'g'));// 7 console.log(arr);// ["a", "b", "c", "d", "e", "f", "g"] 改變原數(shù)組

      pop

      pop()數(shù)組中刪除最后一個(gè)元素, 并返回該元素的值, 當(dāng)數(shù)組為空時(shí)返回undefind, 此方法更改數(shù)組的長度

      let arr = [1, 2, 3, 4, 5]; console.log(arr.pop());// 5 console.log(arr);// [1, 2, 3, 4] 改變原數(shù)組

      shift

      shift()從數(shù)組中刪除第一個(gè)元素, 并返回該元素的值, 該方法會(huì)改變原數(shù)組

      let arr = [1, 2, 3, 4, 5] console.log(arr.shift());// 1 console.log(arr);// [2, 3, 4, 5] 改變原數(shù)組

      unshift

      arr.unshift(element1[, …, elementN])

      unshift()將一個(gè)或多個(gè)元素添加到數(shù)組的開頭, 并返回該數(shù)組的長度, 該方法修改原有數(shù)組

      let arr = [1, 2, 3, 4, 5] console.log(arr.unshift(-1, 0));// 7 console.log(arr);// [-1, 0, 1, 2, 3, 4, 5] 改變原數(shù)組

      splice

      arrar.splice(start[, deleteCount[, item1[, item2[, …]]]])

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

      deleteCount可選[整數(shù)], 表示要移除的數(shù)組元素的個(gè)數(shù). 如果deleteCount大于start之后元素的總數(shù), 則從statr后面的元素都將被刪除(含第start位). 如果deleteCount被省略, 或者它的值大于等于array.length-start(也就是說, 如果它大于或者等于start之后的所有元素的數(shù)量), 那么start之后數(shù)組的所有元素都會(huì)被刪除

      item1, item2, …可選[要添加進(jìn)數(shù)組的元素, 從start位置開始. 如果不指定, 則splice()將只刪除數(shù)組元素]

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

      let arr = [1, 2, 3, 4, 5] console.log(arr.splice(1, 1));// [2] console.log(arr);// [1, 3, 4, 5] 改變原數(shù)組

      slice

      arr.slice([begin[, end]])

      begin可選[提取起始處的索引] 從該索引開始提取原數(shù)組元素. 如果該參數(shù)為負(fù)數(shù), 則表示從原數(shù)組中的倒數(shù)第幾個(gè)元素開始提取, 如果省略begin, 則slice從索引0開始; 如果begin大于原數(shù)組的長度, 則會(huì)返回空數(shù)組

      end可選[提取終止處的索引], 在該索引處結(jié)束提取原數(shù)組元素. slice會(huì)提取原數(shù)組中索引從begin到end到所有元素, 包含begin, 但不包含end. 如果end 被省略, 則slice會(huì)一直提取到原數(shù)組末尾, 如果end大于數(shù)組的長度, slice也會(huì)一直提取到數(shù)組末尾

      slice()返回一個(gè)新的數(shù)組對象, 這一對象是一個(gè)由begin和end決定到原數(shù)組的淺拷貝, 包括begin, 不包括end, 原始數(shù)組不會(huì)被改變

      let arr = [1, 2, 3, 4, 5]; console.log(arr.sclice(1, 3));// [2, 3] console.log(arr);// [1, 2, 3, 4, 5] 不改變原數(shù)組

      concat

      let new_array = old_array.concat(value[, value2[, …[, valueN]]])

      valueN可選[], 將數(shù)組或值連接成新數(shù)組, 如果省略了valueN參數(shù), 則concat會(huì)返回一個(gè)它所調(diào)用的已存在的數(shù)組的淺拷貝

      concat()用于合并兩個(gè)或多個(gè)數(shù)組, 此方法不會(huì)更改現(xiàn)有數(shù)組, 而是返回一個(gè)新數(shù)組

      let arr1 = [1, 2, 3]; let arr2 = [4, 5, 6]; let arr3 = arr1.concat(arr2); console.log(arr3);// [1, 2, 3, 4, 5, 6] console.log(arr1);// [1, 2, 3] 不改變原數(shù)組

      join

      arr.join([separator])

      separator可選 指定一個(gè)字符串來分隔數(shù)組的每個(gè)元素

      join()將一個(gè)數(shù)組(或一個(gè)類數(shù)組對象)的所有元素連接成一個(gè)字符串并返回這個(gè)字符串. 如果數(shù)組只有一個(gè)項(xiàng)目, 那么將返回該項(xiàng)目而不使用分隔符

      let arr = ['a', 'b', 'c']; console.log(arr.join("&"));// a&b&c console.log(arr);// ["a", "b", "c"] 不改變數(shù)組

      sort

      arr.sort([compareFunction])

      compareFunction可選 用來指定按某種順序進(jìn)行排列的函數(shù). 如果省略, 元素按照轉(zhuǎn)換為第字符串的各個(gè)字符的Unicode進(jìn)行排序

      firstEl第一個(gè)用于比較的元素

      secondEl第二個(gè)用于比較的元素

      sort()用原地算法對數(shù)組的元素進(jìn)行排序, 并返回?cái)?shù)組. 默認(rèn)排序順序是在將元素轉(zhuǎn)換為字符串, 然后比較它們的UTF-16代碼單元值序列時(shí)構(gòu)建的

      let arr = [1, 2, 3, 4, 5]; console.log(arr.sort((a, b) => b - a));// [5, 4, 3, 2, 1] console.log(arr);// [5, 4, 3, 2, 1] 改變原數(shù)組

      reverse

      reverse()將數(shù)組中元素的位置顛倒, 并返回該數(shù)組, 該方法會(huì)改變原數(shù)組

      let arr = [1, 2, 3, 4, 5]; console.log(arr.reverse());// [5, 4, 3, 2, 1] console.log(arr);// [5, 4, 3, 2, 1] 改變原數(shù)組

      every

      every()測試一個(gè)數(shù)組內(nèi)的所有元素是否都能通過某個(gè)指定函數(shù)的測試, 返回一個(gè)布爾值

      let arr = [1, 2, 3, 4, 5]; console.log(arr.every(currentValue => currentValue > 1));// false console.log(arr);// 不改變原數(shù)組

      some

      some()測試數(shù)組中是不是至少有1個(gè)元素通過了提供的測試函數(shù), 返回一個(gè)Boolean類型的值

      let arr = [1, 2, 3 ,4 ,5]; console.log(arr.some(currentValue => currentValue > 1));// true console.log(arr);// [1, 2, 3, 4, 5] 不改變原數(shù)組

      filter

      filter()創(chuàng)建一個(gè)新數(shù)組, 其包含通過所提供的測試函數(shù)的所有元素

      let arr = [1, 2, 3, 4, 5]; console.log(arr.filter(currentValue => currentValue > 2));// [3, 4, 5] console.log(arr);// [1, 2, 3, 4, 5] 不改變原數(shù)組

      find

      find()返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個(gè)元素的值, 否則返回undefined

      let arr = [1, 2, 3, 4, 5]; console.log(arr.find(currentValue => currentValue > 2));// 3 console.log(arr);// [1, 2, 3, 4, 5] 不改變原數(shù)組

      findIndex

      findIndex()返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個(gè)元素的索引, 否則返回-1

      let arr = [1, 2, 3, 4, 5]; console.log(arr.findIndex(currentValue => currentValue > 2));// 2 console.log(arr);// [1, 2, 3, 4, 5] 不改變原數(shù)組

      includes

      includes()用來判斷一個(gè)數(shù)組是否包含一個(gè)指定的值, 如果包含則返回true, 否則返回false

      let arr = [1, 2, 3, 4, 5]; console.log(arr.includes(2));// true console.log(arr);// [1, 2, 3, 4, 5] 不改變原數(shù)組

      indexOf

      indexof()返回指定元素在數(shù)組中的第一個(gè)索引, 否則返回-1

      let arr = [1, 2, 3, 4, 5]; console.log(arr.indexOf(2));// 1 console.log(arr);// [1, 2, 3, 4, 5] 不改變原數(shù)組

      lastIndexOf

      lastIndexOf()返回指定元素在數(shù)組中的的最后一個(gè)索引, 如果不存在則返回-1

      let arr = [1, 2, 3, 2, 1]; console.log(arr.lastIndexOf(2));// 3 console.log(arr);// [1, 2, 3, 2, 1] 不改變原數(shù)組

      fill

      fill()用一個(gè)固定值填充一個(gè)數(shù)組從起始索引到終止索引到全部元素, 不包括終止索引

      let arr = [1, 2, 3, 4, 5]; console.log(arr.fill(0, 0, 5));// [0, 0, 0, 0, 0] console.log(arr);// [0, 0, 0, 0 ,0] 改變數(shù)組

      flat

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

      let arr = [1, 2, [3, 4, [5]]]; console.log(arr.flat(2));// [1, 2, 3, 4, 5] console.log(arr);// [1, 2, [3, 4, [5]]] 不改變原數(shù)組

      keys

      keys()返回一個(gè)包含數(shù)組中每個(gè)索引鍵的Array Iterator對象

      let arr = [1, 2, 3, 4, 5]; let iterator = arr.keys(); for (const key of iterator) {   console.log(key);   // 0   // 1   // 2 } console.log(arr);// [1, 2, 3, 4, 5] 不改變原數(shù)組

      常用操作

      數(shù)組去重

      使用對象

      let arr = [1, 2, 3, 1, 1, 1, 3, 5, 3]; let obj = {}; let newArr = []; arr.forEach(v => {   if(!ogj[v]) {     ogj[v] = 1;     newArr.push(v);   } }) console.log(newArr);// [1, 2, 3, 5]

      使用Set

      let arr = [1, 2, 3, 1, 1, 1, 3, 5, 3]; let newArr = Array.from(new Set(arr)); // let newArr = [...(new Set(arr))];// 使用ES6解構(gòu)賦值 console.log(newArr);// [1, 2, 3, 5]

      扁平化數(shù)組

      使用flat

      let arr = [1, 2, [3, 4, [5]]]; let newArr = arr.flat(2); console.log(newArr);// [1, 2, 3, 4, 5]

      遞歸實(shí)現(xiàn)flat

      function _flat(arr, maxN = 1, curN = 0) {   let newArr = [];   if (curN >= maxN) return arr;   arr.forEach((v, i, array) => {     if (Array.isArray(v)) {       newArr.push(..._flat(v, maxN, curN + 1));     } else newArr.push(v);   })   return newArr; } let arr = [1, 2, [3, 4, [5]]]; let newArr = _flat(arr, 1);// 扁平化一層 console.log(newArr);// [1, 2, 3, 4, [5]]

      統(tǒng)計(jì)一個(gè)字符串中出現(xiàn)最多的字符

      使用數(shù)組將字符的ASCII碼作為key制作桶

      let s = "ASASRKIADAA"; let arr = []; let base = 65;// A-Z 65-90 a-z 97-122 Array.prototype.forEach.call(s, (v) => {   let ascii = v.charCodeAt(0) - base;   if (arr[ascii]) {     ++arr[ascii];   } else arr[ascii] = 1; }) let max = 0; let maxIndex = 0; arr.forEach((v, i) => {   if (v > max) {     max = v;     maxIndex = i;   } }) console.log(String.fromCharCode(maxIndex + base), arr[maxIndex]);// A 5

      找出數(shù)組中的最大值

      遍歷數(shù)組

      let arr = [1, 2, 3, 1, 1, 1, 3, 5, 3]; let max = -Infinity; arr.forEach(v => {   if (v > max) max = v; }) console.log(max);// 5

      使用Math

      let arr = [1, 2, 3, 1, 1, 1, 3, 5, 3]; let max = Math.max(...arr); console.log(max);// 5

      使用reduce

      let arr = [1, 2, 3, 1, 1, 1, 3, 5, 3]; let max = arr.reduce((a, v) => {   return a > v ? a : v; }) console.log(max);// 5

      拷貝數(shù)組

      遍歷數(shù)組使用push

      let arr = [1, 2, 3, 4, 5]; let newArr = []; arr.forEach(v => newArr.push(v)); console.log(newArr);// [1, 2, 3, 4, 5]

      使用concat

      let arr = [1, 2, 3, 4, 5]; let newArr = [].concat(arr); console.log(newArr);// [1, 2, 3, 4, 5]

      使用slice

      let arr = [1, 2, 3, 4, 5]; let newArr = arr.slice(0); console.log(newArr);// [1, 2, 3, 4, 5];

      隨機(jī)打亂一個(gè)數(shù)組

      隨機(jī)交換N次

      function randomInt(a, b) {   return Number.parseInt(Math.random() * (b-a) + a); } let arr = [1, 2, 3, 4, 5]; let N = arr.length; arr.forEach((v, i, arr) => {   let ran = randomInt(0, N);   [arr[i], arr[ran]] = [arr[ran], arr[i]]; }) console.log(arr);

      隨機(jī)排序

      let arr = [1, 2, 3, 4, 5]; arr.sort((v1, v2) => {   return Math.random() >= 0.5 ? 1 : -1; }) console.log(arr);

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號