日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js 数组方法总结

發(fā)布時(shí)間:2024/9/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js 数组方法总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Array數(shù)組:

length屬性

????可通過array.length增加或者減少數(shù)組的長(zhǎng)度,如;array.length=4(數(shù)組長(zhǎng)3,第四位為undefined),也可單純獲得長(zhǎng)度。array[array.length]=’’賦值。

檢測(cè)數(shù)組

檢測(cè)是否數(shù)組ES3 ?instanceof array ?ES5新增的Array.isArray(),支持的IE9+,Opera 10.5+,ChromeSafari5+

?

一:原數(shù)組不變 ?[,start],表示01個(gè)參數(shù)

concat()

無參,返回?cái)?shù)組副本;參數(shù)為數(shù)組,將兩個(gè)數(shù)組連接;不是數(shù)組,添加到結(jié)果數(shù)組末尾。在concat拷貝原數(shù)組的過程中,對(duì)象引用時(shí)會(huì)復(fù)制對(duì)象引用到組合的新數(shù)組中,原數(shù)組和新數(shù)組中的對(duì)象引用都指向同一個(gè)實(shí)際變量。所以,實(shí)際對(duì)象被修改時(shí),兩數(shù)組同時(shí)被修改。

粒:

????????????????????????????

?

includes()

ES7。返回一個(gè)布爾值,表示數(shù)組中是否包含給定的值,與字符串includes方法類似。

Includes(searchElement,fromIndex),fromIndex可選,表示開始位置,如果為負(fù)值,按升序從array.length+fromIndex索引開始搜索。

Includes()作為一個(gè)通用方法,也可以用于其他類型對(duì)象,栗子:

(function() {

??console.log([].includes.call(arguments, 'a')); // true

??console.log([].includes.call(arguments, 'd')); // false

})('a','b','c');

兼容性(IE未實(shí)現(xiàn))

?

join()

只接受一個(gè)參數(shù),分隔符的字符串,然后返回所有項(xiàng)的字符串,array.join(“||”)//1||2||3

如果參數(shù)為空,將數(shù)組中的元素直接拼接。Undefied or null 轉(zhuǎn)化為空字符串

slice()

將數(shù)組的一部分淺復(fù)制(shallow copy)存入新的數(shù)組并返回,不改變?cè)瓟?shù)組。

1參或兩參;1個(gè)參返回的是從該參數(shù)指定位置到數(shù)組末尾項(xiàng);2個(gè)參返回起始和結(jié)束位置之間項(xiàng),不包括結(jié)束位置項(xiàng)。

?

indexOf(searchElement,fromIndex)

要查找的項(xiàng),(可選)表示查找起點(diǎn)位置的索引。沒有找到返回-1,從頭開始查找;第二參數(shù)表示開始查找的位置,返回的結(jié)果依然是數(shù)組中的排位。故作用不大。

?

lastIndexOf()從尾開始查找;

toString()返回由數(shù)組中每個(gè)值得字符串形式拼接而成的一個(gè)逗號(hào)分隔的字符串,

valueOf()返回的還是數(shù)組。

toLocaleString()和前兩者差不多。

???

二、改變自身方法

arr.copyWithin(target[,?start[,?end]])?? ??兼容問題

數(shù)組內(nèi)部替換操作,負(fù)數(shù),倒數(shù)開始

[1,?2,?3,?4,?5].copyWithin(-2);??

//?[1,?2,?3,?1,?2]?

?

[1,?2,?3,?4,?5].copyWithin(0,?3);??

//?[4,?5,?3,?4,?5]??

??

[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]?

?

array.fill(value [,statrt [, end ]])

將指定區(qū)間元素填充

[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, -2); ??????// [4, 2, 3]

[1, 2, 3].fill(4, NaN, NaN); ????// [1, 2, 3]

Array(3).fill(4); ???????????????// [4, 4, 4]

[].fill.call({ length: 3 }, 4); ?// {0: 4, 1: 4, 2: 4, length: 3}

?pop()

從數(shù)組末尾移除最后一項(xiàng),減少數(shù)組的length值,返回移除的項(xiàng)。

push()

可以接受任意數(shù)量的參數(shù),把它們逐個(gè)添加到數(shù)組的末尾,并返回修改后數(shù)組的長(zhǎng)度

reverse()

反轉(zhuǎn)數(shù)組項(xiàng)的順序

shift()

移除數(shù)組中的第一項(xiàng)并返回第一項(xiàng),數(shù)組長(zhǎng)度減1

unshift()

在數(shù)組前端添加任意個(gè)項(xiàng),并返回新數(shù)組的長(zhǎng)度

?

sort()

默認(rèn)是按升序排列數(shù)組,比較的是字符串。要想按自己想法排序,寫方法。Sort(方法名) a>b return 1,反之-1,相等 return 0

?

?splice()最強(qiáng)大的數(shù)組方法。向數(shù)組的中部插入項(xiàng)。

????1:刪除,2個(gè)參數(shù),要?jiǎng)h除的第一項(xiàng)位置和項(xiàng)數(shù),splice(0,2)刪除數(shù)組中的前兩項(xiàng)。

????2:插入,3個(gè)參數(shù),起始位置、要?jiǎng)h除的項(xiàng)數(shù)、要插入的項(xiàng)數(shù),如果是多項(xiàng),繼續(xù)傳入?yún)?shù),第4,5更多。Splice(2,0,’1’,’2’),當(dāng)前數(shù)組位置2插入字符串1,2

3:替換,可以向指定位置插入任意數(shù)量的項(xiàng),同時(shí)刪除任意數(shù)量的項(xiàng)。用法同第二條,第二個(gè)參數(shù)不是0

栗子:

刪除給定數(shù)組中的第二項(xiàng)和第三項(xiàng),并且在得到的新的數(shù)組中第一項(xiàng)后面添加一個(gè)新的值

var arr1 = ['a','b','c','d','e'];

var arr2 = arr1.?splice?(?1?,?2?,'newvalue');

?

?

?三、遍歷方法

forEach((v, i, a) => {})
讓數(shù)組的每一項(xiàng)都執(zhí)行一次給定的函數(shù)
v表示當(dāng)前項(xiàng)的值,i表示當(dāng)前索引,a表示數(shù)組本身
forEach遍歷的范圍在第一次調(diào)用 callback前就會(huì)確定。調(diào)用forEach后添加到數(shù)組中的項(xiàng)不會(huì)被 callback訪問到。如果已經(jīng)存在的值被改變,則傳遞給 callback的值是 forEach遍歷到他們那一刻的值。已刪除的項(xiàng)不會(huì)被遍歷到。

?

entries();

返回一個(gè)array

栗子:

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

var eArr = arr.entries();

console.log(eArr.next().value); // [0, "a"]

console.log(eArr.next().value); // [1, "b"]

console.log(eArr.next().value); // [2, "c"]

?

every(),對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對(duì)每一項(xiàng)返回true,則返回true

some()是對(duì)數(shù)組中每一項(xiàng)運(yùn)行指定函數(shù),如果該函數(shù)對(duì)任一項(xiàng)返回true,則返回true

???

?filter()

使用指定的函數(shù)測(cè)試所有元素,并創(chuàng)建一個(gè)包含所有測(cè)試通過的元素的新數(shù)組
callback函數(shù)返回一個(gè)布爾值,true即通過測(cè)試
不會(huì)改變?cè)瓟?shù)組

栗子1

function traverse(){//輸出所有頁面寬度和高度大于50像素的節(jié)點(diǎn)

????return Array.prototype.filter.call(document.querySelectorAll('body *'),?function(node){

????????return node.offsetWidth > 50 && node.offsetHeight > 50;

????});

}

栗子2

var a1 = ['a', 10, 'b', 20, 'c', 30];var a2 = a1.filter(function(item) {

????return typeof item == 'number';

});console.log(a2); // logs 10,20,30

?

find()

查詢到第一個(gè)符合條件的就返回?????????????IE不支持

?

???

keys() ???????????????????????????????????IE不支持

返回一組數(shù)組索引的迭代器(類似于entries

var arr = ['a', , 'c'];

var sparseKeys = Object.keys(arr);

var denseKeys = [...arr.keys()];

console.log(sparseKeys); // ['0', '2']

console.log(denseKeys); ?// [0, 1, 2]

?

array.map((v, i, a) => {}) ??????????????????????IE9+
返回一個(gè)由原數(shù)組中的每個(gè)元素調(diào)用一個(gè)指定方法后的返回值組成的新數(shù)組
map 不修改調(diào)用它的原數(shù)組本身(當(dāng)然可以在 callback 執(zhí)行時(shí)改變?cè)瓟?shù)組)

var numbers = [1, 4, 9];

var roots = numbers.map(Math.sqrt);

// roots is now [1, 2, 3]

// numbers is still [1, 4, 9]

?

?

????

var number = [1,2,3,4,5,4,3,2,1];

???Var everyResult = number.every(function(item,index,array){

//函數(shù)

})

Alert(everyResult);

?

reduce()reduceRight() (反方向) ???????????????????IE9+

對(duì)數(shù)組中的所有元素調(diào)用指定的回調(diào)函數(shù)。該回調(diào)函數(shù)的返回值為累積結(jié)果,并且此返回值在下一次調(diào)用該回調(diào)函數(shù)時(shí)作為參數(shù)提供。

從第一項(xiàng)開始,接收四個(gè)參數(shù):例

Var values = [1,2,3,4,5];

Var sum = values.reduce(function(prev, cur, index, array){

Return prev + cur;

});

?

var flattened = [[0, 1], [2, 3], [4, 5]].reduce(

??function(a, b) {

????return a.concat(b);

??},

??[]);// flattened is [0, 1, 2, 3, 4, 5]

?

?

Array.prototype.slice.call

真實(shí)數(shù)組具有slice方法,可以對(duì)數(shù)組進(jìn)行淺復(fù)制(不影響原數(shù)組),返回的依然是數(shù)組。類似數(shù)組雖然有length屬性,可以使用for循環(huán)遍歷,卻不能直接使用slice方法,會(huì)報(bào)錯(cuò)!但是通過Array.prototype.slice.call則不會(huì)報(bào)錯(cuò),本身(類似數(shù)組)被從頭到尾slice復(fù)制了一遍——變成了真實(shí)數(shù)組!

將類似數(shù)組的對(duì)象(比如arguments)轉(zhuǎn)換為真實(shí)的數(shù)組

?

Array.prototype.slice.call(arguments)

轉(zhuǎn)載于:https://www.cnblogs.com/jasonUED/p/6745412.html

總結(jié)

以上是生活随笔為你收集整理的js 数组方法总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。