成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Array 的一些常用 API

vslam / 3435人閱讀

摘要:不能通過(guò)判斷,它是通過(guò)比較的。和返回布爾值用于檢測(cè)數(shù)組中的元素是否有滿(mǎn)足指定條件的用于檢測(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() 刪除最后一個(gè)元素,返回被刪除的元素

slice

不改變?cè)瓟?shù)組

slice(m, n)返回原數(shù)組索引m(包含)到n(不包含)的元素?cái)?shù)組。不傳參數(shù)默認(rèn)全部截取,只傳一個(gè)參數(shù),從該位置截取到末位。類(lèi)似于String.prototype.substring

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

改變?cè)瓟?shù)組。

splice(m,n,e1,e2,e3) 從索引m(包括)到n(不包括)的元素刪除數(shù)組,再在該位置處添加e1,e2,e3。若n傳入0,則只增加;若只傳m和n,則只刪除;若只傳m,則從m位置刪除到末位。放回刪除元素?cái)?shù)組

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

拼接,不改變?cè)瓟?shù)組

let arr = [1,2,3], arr1 = [4];
console.log(arr.concat(arr1, 5), arr); // [ 1, 2, 3, 4, 5, ] [ 1, 2, 3 ]
console.log([...arr, ...arr1, 5]); // [ 1, 2, 3, 4, 5 ] (對(duì)象也可以這樣拼接,但重復(fù)的會(huì)覆蓋,相當(dāng)與 Object.assign)
of 和 from

of()類(lèi)似于new Array(),但后者如果傳入一個(gè)參數(shù),則是設(shè)置數(shù)組長(zhǎng)度。

from() 把偽數(shù)組轉(zhuǎn)換為真數(shù)組,類(lèi)似于[].slice.call()(或者寫(xiě)成Array.prototype.slice.call())

偽數(shù)組有DOM集、arguments、{0: "zero", 1: "one", length: 2}

Array.of(1,2,3,4); // [ 1, 2, 3, 4 ]
Array.from({0: "zero", 1: "one", length: 2}); // [ "zero", "one" ]
判斷數(shù)組的方法有

xx instanceof Array

Array.isArray()

Object.prototype.toString.call() === "[object Array]"

這里補(bǔ)充一點(diǎn)判斷類(lèi)型的技巧:

typeof操作符可以判斷出number、boolean、string、function和undefined,而不能判斷處具體的Object類(lèi)型。

判斷Array要使用Array.isArray(arr);

判斷null請(qǐng)使用myVar === null;

判斷某個(gè)全局變量是否存在用typeof window.myVar === "undefined";

函數(shù)內(nèi)部判斷某個(gè)變量是否存在用typeof myVar === "undefined"

不必把任意類(lèi)型轉(zhuǎn)換為boolean再判斷,因?yàn)榭梢灾苯訉?xiě)if (myVar) {...},如果需要轉(zhuǎn)換可以用 !!myVar

不要使用new Number()、new Boolean()、new String() 創(chuàng)建包裝對(duì)象;

用parseInt()或parseFloat()來(lái)轉(zhuǎn)換任意類(lèi)型為Number;用String()來(lái)轉(zhuǎn)換任意類(lèi)型為String,或者直接調(diào)用某個(gè)對(duì)象的toString()方法;

indexOf 和 includes

indexOf() 返回索引,不存在就返回 -1。inclues()返回布爾值。

NaN 不能通過(guò)indexOf()判斷,它是通過(guò)“===”比較的。

arr = [1, "2", null, NaN];
arr.indexOf(NaN); // -1
arr.includes(NaN); // true
filter、find 和 findIndex

filter() 返回?cái)?shù)組。find() 返回值,不存在就返回 undefined。 findIndex() 返回第一個(gè)匹配到的索引,不存在就返回 -1。

// let arr = [1, "2", null, NaN];
// arr.filter(item => typeof item === "number"); // [1, NaN]
// arr.find(item => typeof item === "number"); // 1
// arr.findIndex(item => typeof item === "number"); // 0
some 和 every

返回布爾值

some()用于檢測(cè)數(shù)組中的元素是否有滿(mǎn)足指定條件的;every()用于檢測(cè)數(shù)組中所有元素是否都符合指定條件。

不對(duì)空數(shù)組進(jìn)行檢測(cè),不改變?cè)瓟?shù)組

let arr = [Array(), [], {}, null]
let res1 = arr.some((item, index, arr) => {
    return Object.prototype.toString.call(item) === "[object Array]"
})
let res2 = arr.every((item, index, arr) => {
    return Object.prototype.toString.call(item) === "[object Array]"
})
console.log(res1,res2); // true false
map 和 forEach

map() 對(duì)數(shù)組中的每個(gè)元素進(jìn)行處理,得到新的數(shù)組,不改變?cè)瓟?shù)組

forEach() 相當(dāng)于 for 循環(huán),返回 undefined,不改變?cè)瓟?shù)組

let res = [0,1,2,3,4].map((item, idx)=> item * idx); // [ 0, 1, 4, 9, 16 ]
reduce

reduce((accumulator, currentValue, currentIndex, array)=>{}, initValue)

第一個(gè)參數(shù)是迭代器函數(shù),函數(shù)的作用是對(duì)數(shù)組中從左到右的每一個(gè)元素進(jìn)行處理。第二個(gè)可選參數(shù)是累加器的初始值。沒(méi)有時(shí),累加器第一次的值為currentValue。

accumulator 累加器,即函數(shù)上一次調(diào)用的返回值。第一次的時(shí)候?yàn)?initialValue || arr[0]

currentValue 數(shù)組中函數(shù)正在處理的的值,第一次的時(shí)候是 initialValue || arr[1]

currentIndex 數(shù)組中函數(shù)正在處理的的索引

array 函數(shù)調(diào)用的數(shù)組

console.log(
    [1,2,3].reduce((a,b,c,d)=>{
        console.log(a,b,c,d);
        return a+b; // 下一次的a
    }, 4)
); // 10
/* 
    4 1 0 [ 1, 2, 3 ]
    5 2 1 [ 1, 2, 3 ]
    7 3 2 [ 1, 2, 3 ] 
*/

當(dāng)然累乘或者做其他業(yè)務(wù)也是可以的。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99605.html

相關(guān)文章

  • 常用數(shù)組操作方法

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

    vvpale 評(píng)論0 收藏0
  • 關(guān)于一些常用數(shù)組API記憶方法(借鑒)

    摘要:為開(kāi)始截取的索引可為負(fù)值,為結(jié)束的索引可選向從目標(biāo)數(shù)組中添加刪除項(xiàng)目,然后返回被刪除的項(xiàng)目。返回累加之后的結(jié)果上一次調(diào)用回調(diào)返回的值,或者是提供的初始值數(shù)組中當(dāng)前被處理的數(shù)組項(xiàng)當(dāng)前數(shù)組項(xiàng)在數(shù)組中的索引值調(diào)用方法的數(shù)組幫助記憶增刪查改 增 arr.push(); // 目標(biāo)數(shù)組尾部添加,返回新數(shù)組長(zhǎng)度 arr.unshift(); // 目標(biāo)數(shù)組首部添加,返回新數(shù)組...

    Pluser 評(píng)論0 收藏0
  • ECMAScript 5.1 實(shí)用特性概覽

    摘要:返回一個(gè)由原數(shù)組中的每個(gè)元素調(diào)用一個(gè)指定方法后的返回值組成的新數(shù)組。方法測(cè)試數(shù)組中的某些元素是否通過(guò)了指定函數(shù)的測(cè)試,返回值非常實(shí)用的功能,判斷數(shù)組中是否某元素符合特定條件。 ECMAScript 5發(fā)布于2009年12月。ECMAscript 5.1版(下文稱(chēng)ES5)發(fā)布于2011年6月,,并且成為ISO國(guó)際標(biāo)準(zhǔn)(ISO/IEC 16262:2011) http://www.ecma...

    xiao7cn 評(píng)論0 收藏0
  • ECMAScript 5.1 實(shí)用特性概覽

    摘要:返回一個(gè)由原數(shù)組中的每個(gè)元素調(diào)用一個(gè)指定方法后的返回值組成的新數(shù)組。方法測(cè)試數(shù)組中的某些元素是否通過(guò)了指定函數(shù)的測(cè)試,返回值非常實(shí)用的功能,判斷數(shù)組中是否某元素符合特定條件。 ECMAScript 5發(fā)布于2009年12月。ECMAscript 5.1版(下文稱(chēng)ES5)發(fā)布于2011年6月,,并且成為ISO國(guó)際標(biāo)準(zhǔn)(ISO/IEC 16262:2011) http://www.ecma...

    bang590 評(píng)論0 收藏0
  • 前端常用代碼片段(五)

    摘要:當(dāng)運(yùn)行時(shí),如果不為,則將超時(shí)函數(shù)推送到事件隊(duì)列,并且函數(shù)退出,從而使調(diào)用堆棧清零。因此,該方法從頭到尾不經(jīng)過(guò)直接遞歸調(diào)用即可處理,因此調(diào)用堆棧保持清晰,無(wú)論迭代次數(shù)如何。 前端常用代碼片段(一) 點(diǎn)這里前端常用代碼片段(二) 點(diǎn)這里前端常用代碼片段(三) 點(diǎn)這里前端常用代碼片段(四) 點(diǎn)這里 1.tap事件點(diǎn)透問(wèn)題? 問(wèn)題點(diǎn)擊穿透問(wèn)題:點(diǎn)擊蒙層(mask)上的關(guān)閉按鈕,蒙層消失后發(fā)現(xiàn)觸...

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

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

0條評(píng)論

閱讀需要支付1元查看
<