国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Array和常用API

coordinate35 / 2192人閱讀

摘要:返回值自寫一下函數(shù)這就是一個(gè)簡(jiǎn)單的自寫的一個(gè)函數(shù),代表操作的數(shù)組,代表用來操作數(shù)組的函數(shù),傳入數(shù)組和函數(shù)。返回值返回排序后的數(shù)組。分隔符指定一個(gè)字符串來分隔數(shù)組的每個(gè)元素。生成新數(shù)組元素的函數(shù),使用三個(gè)參數(shù)。

什么是數(shù)組

在阮一峰的《JavaScript 標(biāo)準(zhǔn)參考教程(alpha)》中的解釋是:
數(shù)組(array)是按次序排列的一組值。每個(gè)值的位置都有編號(hào)(從0開始),整個(gè)數(shù)組用方括號(hào)表示。
JS的本質(zhì)理解是:
數(shù)組(array)就是原型鏈中有 Array.prototype 的對(duì)象

基本用法
var a = Array(3) // {length:3}
var a = new Array(3) // {length:3}

如果輸入只有一個(gè)數(shù)字,那么創(chuàng)建的數(shù)組就是length為3,并且三個(gè)數(shù)的值都為undefinde。new加不加效果都一樣

var b = Array(3,3) // [3,3] 
var b = new Array(3,3) // [3,3]

如果輸入的值超過一個(gè),那么創(chuàng)建的就是一個(gè)value等于輸入值的數(shù)組。new加不加效果都一樣

var a = [,,,]//{length:3},值為undefined
var a = [3,3]//[3,3]

創(chuàng)建數(shù)組也可以像這樣直接創(chuàng)建,只有逗號(hào)的話代表的就是有下標(biāo)但是值為undefined的數(shù)。

偽數(shù)組

有 0,1,2,3,4,5...n,length 這些 key 的對(duì)象

原型鏈中沒有 Array.prototype

這樣的對(duì)象就是偽數(shù)組

目前學(xué)習(xí)到的偽數(shù)組例如:

arguments 對(duì)象

document.querySelectAll("div") 返回的對(duì)象

數(shù)組的API Array.prototype.forEach()

forEach()接收一個(gè)函數(shù),并且forEach()方法對(duì)數(shù)組的每個(gè)元素執(zhí)行一次提供的函數(shù)。

array.forEach(callback(currentValue, index, array){
    //do something
})

array.forEach(callback())

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

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

index(索引):數(shù)組中正在處理的當(dāng)前元素的索引。

array:forEach()方法正在操作的數(shù)組。

返回值:undefined

自寫一下forEach函數(shù)

function forEach(array, x){
    for(let i = 0;i < array.length; i++){
        x(array[i],i)
    }
}

這就是一個(gè)簡(jiǎn)單的forEach()自寫的一個(gè)函數(shù),array代表操作的數(shù)組,x代表用來操作數(shù)組的函數(shù),傳入數(shù)組和函數(shù)。

var obj = []

obj.forEach = function(x){
    for(let i = 0; i < this.length; i++){
        x(this[i], i)
    }
}

this就是指代obj這個(gè)數(shù)組

Array.prototype.sort()

sort() 方法用就地( in-place )的算法對(duì)數(shù)組的元素進(jìn)行排序,并返回?cái)?shù)組。 sort 排序不一定是穩(wěn)定的。默認(rèn)排序順序是根據(jù)字符串Unicode碼點(diǎn)。

arr.sort() 
arr.sort(compareFunction)

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

返回值:返回排序后的數(shù)組。原數(shù)組已經(jīng)被排序后的數(shù)組代替。

如果沒有指明 compareFunction ,那么元素會(huì)按照轉(zhuǎn)換為的字符串的諸個(gè)字符的Unicode位點(diǎn)進(jìn)行排序。例如 "Banana" 會(huì)被排列到 "cherry" 之前。當(dāng)數(shù)字按由小到大排序時(shí),9 出現(xiàn)在 80 之前,但因?yàn)椋]有指明 compareFunction),比較的數(shù)字會(huì)先被轉(zhuǎn)換為字符串,所以在Unicode順序上 "80" 要比 "9" 要靠前。

如果是數(shù)字想升序排列,sort()中輸入:

function compareNumbers(a, b) {
  return a - b;
}//也可以(a,b) => a-b

如果是數(shù)字想倒序排列,sort()中輸入:

function compareNumbers(a, b) {
  return b - a;
}//也可以(a,b) => b-a

對(duì)象可以按照某個(gè)屬性排列:

var students = ["小明","小紅","小花"] 
var scores = { 小明: 59, 小紅: 99, 小花: 80 } 
students.sort(function(x, y){
         return scores[y] - scores[x]
})

另外sort()是一個(gè)比較特殊的API,因?yàn)樗淖兞俗陨頂?shù)組,這是為了節(jié)省內(nèi)存。

Array.prototype.join()

join() 方法將一個(gè)數(shù)組(或一個(gè)類數(shù)組對(duì)象)的所有元素連接成一個(gè)字符串并返回這個(gè)字符串。

str = arr.join(separator)
// 分隔符

separator:
指定一個(gè)字符串來分隔數(shù)組的每個(gè)元素。
如果需要(separator),將分隔符轉(zhuǎn)換為字符串。
如果省略(),數(shù)組元素用逗號(hào)分隔。默認(rèn)為 ","。
如果separator是空字符串(""),則所有元素之間都沒有任何字符。

返回值:一個(gè)所有數(shù)組元素連接的字符串。如果 arr.length 為0,則返回空字符串

var a = ["a","s","d"]
a.join()//"a,s,d"
a.join("")//"asd"
a.join("f")//"afsfd"

所有的數(shù)組元素被轉(zhuǎn)換成字符串,再用一個(gè)分隔符將這些字符串連接起來。如果元素是undefined 或者null, 則會(huì)轉(zhuǎn)化成空字符串。

Array.prototype.concat()

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

var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])

valueN:將數(shù)組和/或值連接成新數(shù)組。

返回值:新的 Array 實(shí)例。

var alpha = ["a", "b", "c"];
var numeric = [1, 2, 3];

alpha.concat(numeric);//[1, 2, 3, 4, 5, 6, 7, 8, 9]

將兩個(gè)數(shù)組連接起來生成一個(gè)新的數(shù)組。

var alpha = ["a", "b", "c"];

var alphaNumeric = alpha.concat(1, [2, 3]);
//["a", "b", "c", 1, 2, 3]

可以直接將值連接到數(shù)組,生成一個(gè)新的數(shù)組。

var a = [1,2,3]
var b = a.concat()//[1, 2, 3]
b === a//false

concat()可以創(chuàng)建一個(gè)相同值的數(shù)組,但是是新創(chuàng)建的一個(gè)對(duì)象。

Array.prototype.map()

map() 方法創(chuàng)建一個(gè)新數(shù)組,其結(jié)果是該數(shù)組中的每個(gè)元素都調(diào)用一個(gè)提供的函數(shù)后返回的結(jié)果。
map()和forEach()很像,但是forEach()返回undefined,而map()返回一個(gè)對(duì)數(shù)組內(nèi)每個(gè)數(shù)處理的數(shù)組。

let new_array = arr.map(function callback(value, key, array) { 
    // Return element for new_array 
})

callback:生成新數(shù)組元素的函數(shù),使用三個(gè)參數(shù)。

value:callback 的第一個(gè)參數(shù),數(shù)組中正在處理的當(dāng)前元素。

key:callback 的第二個(gè)參數(shù),數(shù)組中正在處理的當(dāng)前元素的下標(biāo)。

array:callback 的第三個(gè)參數(shù),map 方法被調(diào)用的數(shù)組。

返回值:一個(gè)新數(shù)組,每個(gè)元素都是回調(diào)函數(shù)的結(jié)果。

var a = [1,2,3]
a.map(function(value,key){
      return value *value
})//[1,4,9]

map()可以對(duì)數(shù)組的每個(gè)值進(jìn)行操作,和forEach是基本一樣的,但是,map()返回一個(gè)新的數(shù)組,而forEach返回的是undefined。

Array.prototype.filter()

filter() 方法創(chuàng)建一個(gè)新數(shù)組, 其包含通過所提供函數(shù)實(shí)現(xiàn)的測(cè)試的所有元素。

array.filter(function(value, key, array){})

value:當(dāng)前在數(shù)組中處理的元素

key:正在處理元素在數(shù)組中的下標(biāo)(索引)

array:調(diào)用了filter篩選器的數(shù)組

返回值:返回的是一個(gè)布爾值,來判斷篩選條件

var a = [1,2,3,4,5,6,7,8,9,10]
a.filter(function(value){
    return value > 5
})//[6, 7, 8, 9, 10]

進(jìn)行篩選,返回一個(gè)篩選之后的數(shù)組,不改變?cè)瓟?shù)組

Array.prototype.reduce()

reduce() 方法對(duì)累加器和數(shù)組中的每個(gè)元素(從左到右)應(yīng)用一個(gè)函數(shù),將其減少為單個(gè)值。

a.reduce(callback(prev, value),initial)

callback:執(zhí)行數(shù)組中每個(gè)值的函數(shù)

prev:累加器累加回調(diào)的返回值; 它是上一次調(diào)用回調(diào)時(shí)返回的累積值

value:數(shù)組中正在處理的元素

initial:累加時(shí)的初始值

var a = [1,2,3,4,5,6,7,8,9,10]
a.reduce(function(sum,n){
        return sum + n
},0)//55

對(duì)數(shù)組的內(nèi)容累計(jì)處理,reduce可以變換實(shí)現(xiàn)map()和filter()

var a = [1,2,3]
a.reduce(function(arr,n){
    arr.push(n*2)
    return arr
},[])//[2, 4, 6]

這就是reduce()實(shí)現(xiàn)map()的過程

var a = [1,2,3,4,5,6,7,8,9,10]
a.reduce(function(arr,n){
   if(n%2===0){
       arr.push(n) 
   }
   return arr
},[])//[2, 4, 6, 8, 10]

這是reduce()實(shí)現(xiàn)filter()的過程

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/96084.html

相關(guān)文章

  • JS 數(shù)組常用API方法遍歷方法總結(jié)

    摘要:數(shù)組語法功能遍歷數(shù)組,返回回調(diào)返回值組成的新數(shù)組,不改變?cè)瓟?shù)組,不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)語法功能無法,可以用中來停止,不改變?cè)瓟?shù)組語法功能過濾,返回過濾后的數(shù)組,不改變?cè)瓟?shù)組,不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)語法功能有一項(xiàng)返回,則整體為,不改變?cè)瓟?shù)組語法 數(shù)組 (array) ES5 * map 語法:[].map(function(item, index, array) {return xxx})功...

    TNFE 評(píng)論0 收藏0
  • Array 的一些常用 API

    摘要:不能通過判斷,它是通過比較的。和返回布爾值用于檢測(cè)數(shù)組中的元素是否有滿足指定條件的用于檢測(cè)數(shù)組中所有元素是否都符合指定條件。第二個(gè)可選參數(shù)是累加器的初始值。累加器,即函數(shù)上一次調(diào)用的返回值。 unshift、push、shift、pop 這4個(gè)方法都會(huì)改變?cè)瓟?shù)組 unshift() 從前面添加元素,push() 從后面追加元素,返回?cái)?shù)組長(zhǎng)度 shift() 刪除第0個(gè)元素,pop()...

    vslam 評(píng)論0 收藏0
  • 數(shù)組常用 API

    摘要:,也不會(huì)出來接受兩個(gè)參數(shù),回調(diào)函數(shù)和回調(diào)函數(shù)的第一個(gè)參數(shù)可選回調(diào)函數(shù)接受四個(gè)參數(shù)回調(diào)函數(shù)的返回值處理結(jié)果或者的第二個(gè)參數(shù)正在處理的元素正在處理元素的索引調(diào)用的數(shù)組。 數(shù)組常用 api 介紹 split():拆分字符串變成數(shù)組(對(duì)字符串操作)join() :合并數(shù)組變成字符串(對(duì)數(shù)組操作)concat():連接兩數(shù)組splice(begin,deleteCount,insert):拼接s...

    duan199226 評(píng)論0 收藏0
  • PHP: array數(shù)組常用API

    摘要:語法數(shù)組刪除數(shù)組的最后一項(xiàng)語法數(shù)組在數(shù)組的最末添加一項(xiàng)語法數(shù)組刪除數(shù)組的首項(xiàng)語法數(shù)組在數(shù)組的首部添加一項(xiàng)案例分析 1:數(shù)組的指針操作: 語法:current(數(shù)組) 當(dāng)前指針指向的單元值(默認(rèn)是第零個(gè))語法 next(數(shù)組) 當(dāng)前指針往下移動(dòng)一幀語法 prev(數(shù)組) 當(dāng)前指針往前移動(dòng)一個(gè)指針語法 end(array) 將當(dāng)前指針移動(dòng)到最后一項(xiàng)語法 ...

    Cheriselalala 評(píng)論0 收藏0
  • 常用數(shù)組操作方法

    摘要:是對(duì)象內(nèi)置的方法參數(shù)是字符串是的數(shù)組參數(shù)有函數(shù)和默認(rèn)初始值函數(shù)有四個(gè)參數(shù)上一次的返回值當(dāng)前值當(dāng)前值索引當(dāng)前數(shù)組求和替換方案求和,利用截取改變數(shù)組再利用遞歸求和合并方法用于合并兩個(gè)或多個(gè)數(shù)組。 來源于:阿賢博客 在日常的開發(fā)中離不開前端對(duì)數(shù)據(jù)的處理,在這里整理下ES6/ES7/ES8...新的數(shù)組api。 扁平化n維數(shù)組 Array.flat() -- ES10 方法會(huì)按照一個(gè)可指定的...

    vvpale 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<