摘要:函數(shù)接受個(gè)參數(shù)前一個(gè)值,當(dāng)前值,項(xiàng)索引,數(shù)組本身。更多數(shù)組方法請(qǐng)看
js內(nèi)置對(duì)象之Array
一,會(huì)改變?cè)瓟?shù)組 1.移除數(shù)組末尾最后一項(xiàng).pop()返回刪除的元素
如果你在一個(gè)空數(shù)組上調(diào)用 pop(),它返回 undefined
let word = ["a", "b", "c", "d"]; let newArr = word.pop(); console.log(word); //["a", "b", "c"] console.log(newArr); //d let nullArr = []; console.log(nullArr.pop()); //undefined2.在數(shù)組末尾添加一個(gè)或多個(gè)元素.push()
返回修改后數(shù)組長(zhǎng)度
let word = ["a", "b", "c", "d"]; let newArr = word.push("e","f"); console.log(word); //["a", "b", "c", "d", "e", "f"] console.log(newArr); //63.移除數(shù)組第一項(xiàng).shift()
返回移除的元素
let word = ["a", "b", "c", "d"]; let newArr = word.shift(); console.log(word); //["b", "c", "d"] console.log(newArr); //a4.在數(shù)組頭部添加一個(gè)或多個(gè)元素.unshift()
返回修改后數(shù)組長(zhǎng)度
let word = ["a", "b", "c", "d"]; let newArr = word.unshift("11","22"); console.log(word); //["11", "22", "a", "b", "c", "d"] console.log(newArr); //65.對(duì)數(shù)組元素排序.sort()
返回排序后的數(shù)組
默認(rèn)排序順序是根據(jù)字符串Unicode碼點(diǎn)
let fruit = ["cherries", "apples", "bananas"]; console.log(fruit.sort()); // ["apples", "bananas", "cherries"] let scores = [1, 10, 21, 2]; console.log(scores.sort()); // [1, 10, 2, 21] // 注意10在2之前, // 因?yàn)樵?Unicode 指針順序中"10"在"2"之前 let things = ["word", "Word", "1 Word", "2 Words"]; console.log(things.sort()); // ["1 Word", "2 Words", "Word", "word"] // 在Unicode中, 數(shù)字在大寫字母之前, // 大寫字母在小寫字母之前. function compare(a, b) { if(a < b) { return -1; }else if(a > b) { return 1; }else { return 0; } } let num = [1, 10, 21, 2]; console.log(num.sort(compare)); //[1, 2, 10, 21]6.顛倒數(shù)組元素.reverse()
返回顛倒后的數(shù)組
let word = ["a", "b", "c", "d"]; let newArr = word.reverse(); console.log(word); //["d", "c", "b", "a"] console.log(newArr); //["d", "c", "b", "a"]7.刪除或插入元素.splice()
返回?cái)?shù)組刪除的項(xiàng)
沒有刪除的項(xiàng),返回空數(shù)組
var word = ["a", "b", "c", "d"]; //刪除,前閉后開 var newArr = word.splice(0,2); console.log(word); //["c", "d"] console.log(newArr); //["a", "b"] //插入,當(dāng)前數(shù)組索引1處插入hello var newArr = word.splice(1,0,"hello"); console.log(word); //["c", "hello", "d"] console.log(newArr); //[] //替換 var newArr = word.splice(1,1,"world"); console.log(word); //["c", "world", "d"] console.log(newArr); //["hello"]二,不會(huì)改變?cè)瓟?shù)組 1.合并兩個(gè)或多個(gè)數(shù)組.concat()
返回新數(shù)組
let word = ["a", "b", "c", "d"]; let word2 = ["hello","world"]; let newArr = word.concat(word2); console.log(word); //["a", "b", "c", "d"] console.log(newArr); //["a", "b", "c", "d", "hello", "world"]2.將數(shù)組所有元素連接成一個(gè)字符串.join()
返回連接后的字符串
let word = ["a", "b", "c", "d"]; let newArr = word.join("---"); console.log(word); //["a", "b", "c", "d"] console.log(newArr); //a---b---c---d3.截取數(shù)組元素到新數(shù)組中.slice()
返回新數(shù)組
let word = ["a", "b", "c", "d"]; //原數(shù)組索引為1開始截取后面所有元素 let newArr = word.slice(1); console.log(word); //["a", "b", "c", "d"] console.log(newArr); //["b", "c", "d"] //截取原數(shù)組索引為1到3之間的元素,前閉后開 let newArr2 = word.slice(1,3); console.log(word); //["a", "b", "c", "d"] console.log(newArr2); //["b", "c"] //截取原數(shù)組倒數(shù)第三個(gè)元素與倒數(shù)第一個(gè)元素之間的元素,前閉后開 let newArr3 = word.slice(-3,-1); console.log(word); //["a", "b", "c", "d"] console.log(newArr3); //[["b", "c"]4.獲取查詢?cè)氐谝淮纬霈F(xiàn)的索引.indexOf()
找不到查詢?cè)?,則返回-1
let word = ["a", "b", "b", "c", "d"]; let index = word.indexOf("b"); //1,第一次出現(xiàn)b的索引值 let index2 = word.indexOf("hello"); //-1 console.log(index); console.log(index2);5.獲取查詢?cè)刈詈笠淮纬霈F(xiàn)的索引.lastIndexOf()
找不到查詢?cè)?,則返回-1
let word = ["a", "b", "b", "c", "d"]; let index = word.lastIndexOf("b"); //2,最后一個(gè)b的索引值為2 let index2 = word.lastIndexOf("hello"); //-1 console.log(index); console.log(index2);6.toString()返回由數(shù)組每個(gè)元素的字符串形式拼接而成的以逗號(hào)分隔的字符串
let word = ["a", "b", "b", "c", "d"]; let str = word.toString(); //a,b,b,c,d console.log(str);7.toLocaleString()返回一個(gè)字符串表示數(shù)組中的元素,更多了解查看MDN 三,迭代方法
每個(gè)方法接受含有三個(gè)參數(shù)的函數(shù),三個(gè)參數(shù)為:數(shù)組中的項(xiàng),元素索引,數(shù)組本身
1.every(),數(shù)組所有元素都滿足要求則返回true,否則返回false
2.some(),只要有滿足要求的就返回true
3.filter(),返回過濾后的結(jié)果數(shù)組
4.map(),返回在函數(shù)中處理過的數(shù)組
5.forEach(),遍歷整個(gè)數(shù)組
var number = [1,2,3,4,5,6,7,8]; var res = number.every(function(item, index, array) { return (item > 2); }) console.log(res); //false var res = number.some(function(item, index, array) { return (item > 2); }) console.log(res); //true var res = number.filter(function(item, index, array) { return (item > 2); }) console.log(res); //[3, 4, 5, 6, 7, 8] var res = number.map(function(item, index, array) { return (item * 2); }) console.log(res); //[2, 4, 6, 8, 10, 12, 14, 16] var res = number.forEach(function(item, index, array) { //執(zhí)行某些操作 })四,歸并方法
迭代數(shù)組所有項(xiàng),構(gòu)建最終返回值,每個(gè)方法接受兩個(gè)參數(shù):調(diào)用的函數(shù)和作為歸并基礎(chǔ)的初始值。函數(shù)接受4個(gè)參數(shù):前一個(gè)值,當(dāng)前值,項(xiàng)索引,數(shù)組本身。函數(shù)返回的值都會(huì)作為第一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng),第一次迭代從數(shù)組第二項(xiàng)開始,當(dāng)前值為數(shù)組第二項(xiàng)
1.reduce(),從數(shù)組第一項(xiàng)開始遍歷到最后
2.reduceRight(),從數(shù)組最后一項(xiàng)開始遍歷到第一項(xiàng)
/* 開始執(zhí)行回調(diào)函數(shù)cur為2,prev為1, 第二次執(zhí)行回調(diào)函數(shù),在之前的基礎(chǔ)上加1 函數(shù)返回的值都會(huì)作為一個(gè)參數(shù)傳給下一項(xiàng), 最后執(zhí)行函數(shù)時(shí)就是28+8 */ var number = [1,2,3,4,5,6,7,8]; var res = number.reduce(function(prev, cur, index, array) { return prev + cur; }) console.log(res); //1+2+3+4+5+6+7+8=36 var res = number.reduceRight(function(prev, cur, index, array) { return prev + cur; }) console.log(res); //8+7+6+5+4+3+2+1=36五,結(jié)束語(yǔ)
數(shù)組是除了函數(shù)對(duì)象之外在js中使用最多的數(shù)據(jù)類型,掌握一些數(shù)組中常用方法在使用js做開發(fā)時(shí)還是會(huì)有幫助的,而且有些面試中也會(huì)問到相關(guān)問題,比如數(shù)組操作方法中哪些會(huì)改變?cè)瓟?shù)組,哪些不會(huì)。更多數(shù)組方法請(qǐng)看MDN
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93669.html
摘要:原文地址不管是在面試中還是在筆試中,我們都會(huì)被經(jīng)常問到關(guān)于數(shù)組的一些算法,比方說數(shù)組去重?cái)?shù)組求交集數(shù)組擾亂等等。今天抽點(diǎn)時(shí)間把中的一些常用的數(shù)組算法做一下總結(jié),以方便大家面試筆試或者日常開發(fā)過程中用到。 原文地址:http://www.cnblogs.com/front-... 不管是在面試中還是在筆試中,我們都會(huì)被經(jīng)常問到關(guān)于javascript數(shù)組的一些算法,比方說數(shù)組去重、數(shù)組求...
摘要:數(shù)組索引只是具有整數(shù)名稱的枚舉屬性,并且與通用對(duì)象屬性相同。利用的解構(gòu)賦值解構(gòu)賦值尾遞歸優(yōu)化遞歸非常耗內(nèi)存,因?yàn)樾枰瑫r(shí)保存成千上百個(gè)調(diào)用幀,很容易發(fā)生棧溢出。而尾遞歸的實(shí)現(xiàn),往往需要改寫遞歸函數(shù),確保最后一步只調(diào)用自身。 一.前言 因?yàn)樵诠ぷ鳟?dāng)中,經(jīng)常使用到j(luò)s的數(shù)組,而其中對(duì)數(shù)組方法的使用也是很頻繁的,所以總是會(huì)有弄混或者概念不夠清晰的狀況,所以,寫下這篇文章整理一番,本文有對(duì)幾乎...
摘要:本文記錄關(guān)于數(shù)組的一些常用方法,搜集總結(jié)。對(duì)于數(shù)組中的每個(gè)元素,都會(huì)調(diào)用函數(shù)一次。返回值是一個(gè)新數(shù)組,其中的每個(gè)元素均為關(guān)聯(lián)的原始數(shù)組元素的回調(diào)函數(shù)返回值。 本文記錄關(guān)于js數(shù)組的一些常用方法,搜集總結(jié)。 主要思路: 1. 方法功能是什么 2. 傳遞的參數(shù)是什么 3. 返回值是什么 4. 原來的數(shù)組是否改變 第一組:關(guān)于數(shù)組的增加、刪除和修改 1.push 向數(shù)組末尾增加新的...
摘要:一可以用作對(duì)象的復(fù)制可以用作對(duì)象的合并注意目標(biāo)對(duì)象自身也會(huì)改變。對(duì)象四返回一個(gè)數(shù)組,包括對(duì)象自身的不含繼承的所有可枚舉屬性不含屬性的鍵名。該方法返回被凍結(jié)的對(duì)象。方法判斷一個(gè)對(duì)象是否被凍結(jié)。 JavaScript對(duì)Object對(duì)象的一些常用操作總結(jié)。 一、Object.assign() 1.可以用作對(duì)象的復(fù)制 var obj = { a: 1 }; var copy = Object....
摘要:函數(shù)聲明應(yīng)該在作用域的頂層。數(shù)組和對(duì)象字面量用數(shù)組和對(duì)象字面量來代替數(shù)組和對(duì)象構(gòu)造器。數(shù)組構(gòu)造器很容易讓人在它的參數(shù)上犯錯(cuò)。推薦對(duì)象構(gòu)造器不會(huì)有類似的問題,但是為了可讀性和統(tǒng)一性,我們應(yīng)該使用對(duì)象字面量。 javascript 代碼規(guī)范 代碼規(guī)范我們應(yīng)該遵循古老的原則:能做并不意味著應(yīng)該做。 全局命名空間污染 總是將代碼包裹在一個(gè)立即的函數(shù)表達(dá)式里面,形成一個(gè)獨(dú)立的模塊。 不推薦 va...
閱讀 1694·2019-08-30 15:54
閱讀 3346·2019-08-26 17:15
閱讀 3536·2019-08-26 13:49
閱讀 2589·2019-08-26 13:38
閱讀 2301·2019-08-26 12:08
閱讀 3065·2019-08-26 10:41
閱讀 1378·2019-08-26 10:24
閱讀 3387·2019-08-23 18:35