1.數(shù)組的常用方法
成都創(chuàng)新互聯(lián)公司專注于豐都網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供豐都營銷型網(wǎng)站建設(shè),豐都網(wǎng)站制作、豐都網(wǎng)頁設(shè)計(jì)、豐都網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造豐都網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供豐都網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
push(val):數(shù)組的末尾添加新的元素,返回操作完成后數(shù)組的長度
pop():刪除數(shù)組最后一個(gè)元素,返回被刪除的元素
shift():刪除數(shù)組的第一個(gè)元素,返回被刪除的元素
unshift(val):數(shù)組的開頭添加新的元素,返回操作完成后數(shù)組的長度
<script> var arr = [1,2,3,4] // 在數(shù)組末尾添加元素 arr.push(5) console.log(arr) // [1, 2, 3, 4, 5] // 刪除數(shù)組最后一個(gè)元素 arr.pop() console.log(arr) // [1, 2, 3, 4] // 在數(shù)組最前面添加元素 arr.unshift(0) console.log(arr) // [0, 1, 2, 3, 4] // 刪除數(shù)組的第一個(gè)元素 arr.shift() console.log(arr) // [1, 2, 3, 4] </script>
2.數(shù)組的遍歷
數(shù)組遍歷可以使用for循環(huán)和foreach
<script> var arr = [1,2,3,4] // for循環(huán) for(var i=0;i<arr.length;i++){ console.log(arr[i]) } // foreach arr.forEach(function(val,index){ console.log(val,index) }) </script>
3.ES6數(shù)組新增方法
<script> var arr = [1,2,3,4] var newArr = arr.map(function(val){ return val*2 }) console.log(newArr) // [2, 4, 6, 8] </script>
filter(cb):過濾
<script> var arr = [1,2,3,4] var newArr = arr.filter(function(val){ // 只保留 >2 的元素 return val>2 }) console.log(newArr) // [3, 4] </script>
some(cb) :檢測數(shù)組中是否有元素滿足條件,只要有一個(gè)滿足就返回true,否則返回false
<script> var arr = [1,2,3,4] var flag = arr.some(function(val){ return val>2 }) console.log(flag) // true var flag2 = arr.some(function(val){ return val>5 }) console.log(flag2) // false </script>
every(cb):所有元素都滿足才會(huì)返回true,否則返回false
<script> var arr = [1,2,3,4] var flag = arr.every(function(val){ return val>2 }) console.log(flag) // false var flag2 = arr.every(function(val){ return val>0 }) console.log(flag2) // true </script>
reduce(cb):累加器
reduce()對(duì)數(shù)組元素進(jìn)行遍歷,每次遍歷就進(jìn)行依次累加計(jì)算,遍歷結(jié)束后返回累加的最終值
語法:arr.reduce((要累加并返回的數(shù),數(shù)組元素) => {},初始值)
var list = [ {name:'西瓜',price:2,num:2}, {name:'香蕉',price:4,num:1}, {name:'玉米',price:2,num:5}, {name:'蘋果',price:8,num:1} ] var totalPrice = list.reduce((total,item) => { return total + item.price * item.num },0) console.log(totalPrice) // 26
4.查找數(shù)組的子元素
查找數(shù)組元素的下標(biāo)
indexOf():返回具體元素在數(shù)組中的下標(biāo)
findIndex(cb):查找符合條件的第一個(gè)元素的下標(biāo)
lastIndexOf()和indexOf()的功能一樣,不同的是lastIndexOf()從后往前查找
<script> var arr = [1,2,3,4] var index = arr.indexOf(1) console.log(index) // 0 var index2 = arr.indexOf(5) // 沒有這個(gè)元素 console.log(index2) // -1 var index3 = arr.findIndex(function(val){ return val>2 }) console.log(index3) // 2 var index4 = arr.findIndex(function(val){ // 沒有一個(gè)元素符合條件 return val>5 }) console.log(index4) //-1 </script>
查找符合條件的第一個(gè)數(shù)組元素 find(cb)
這個(gè)方法跟filter()差不多,只是這個(gè)只查找一個(gè)。而filter()會(huì)查找所有符合條件的數(shù)組元素
<script> var arr = [1,2,3,4] var result = arr.find(function(val){ // 查找第一個(gè)大于3.5的子元素 return val>3.5 }) console.log(result) // 4 </script>
判斷一個(gè)數(shù)組是否含有某個(gè)子元素 includes()
<script> var arr = [1,2,3,4] // 數(shù)組是否含有 1 var flag = arr.includes(2) // 數(shù)組是否含有 5 var flag2 = arr.includes(5) console.log(flag) // true console.log(flag2) // false </script>
5.數(shù)組轉(zhuǎn)換
數(shù)組與字符串間的轉(zhuǎn)換 split()/join()
<script> var str = "hello world" // 根據(jù)標(biāo)識(shí)將字符串分割成數(shù)組 var arr = str.split(" ") console.log(arr) //["hello", "world"] // 將數(shù)組的子元素拼接成字符串 var str2 = arr.join("-") console.log(str2) // "hello-world" </script>
偽數(shù)組轉(zhuǎn)化為數(shù)組(一個(gè)對(duì)象,如果可以通過下標(biāo)的形式訪問屬性值,那么它就屬于偽數(shù)組)
Array.from() 推薦
Array.prototype.slice()
通過某些方法獲取到的Dom元素是一個(gè)偽數(shù)組,不能正常使用foreach(),除非先轉(zhuǎn)換成數(shù)組
<script> var lis = document.getElementsByTagName('li') // 偽數(shù)組,不能使用foreach() console.log(lis) // HTMLCollection(4) [li.test, li.test, li.test, li.test] // 已經(jīng)轉(zhuǎn)化為數(shù)組,但是是個(gè)空數(shù)組,依然無法遍歷 console.log(Array.prototype.slice(lis)) // [] // 已經(jīng)轉(zhuǎn)化為數(shù)組,且可以遍歷 console.log(Array.from(lis)) // [li.test, li.test, li.test, li.test] Array.from(lis).forEach(function(item){ console.log(item.innerHTML) }) </script>
6.數(shù)組排序
1.插入排序
從第二個(gè)元素開始,拿他前面的元素與它比較,如果它比前面的元素小,則這個(gè)對(duì)比元素往后挪一個(gè)位置(實(shí)際上是arr[p + 1] = arr[p]),接著往左邊找對(duì)比元素左比較,直到找到最后一個(gè)或者比它小的元素位置為止,此時(shí)將這個(gè)元素放到這個(gè)相應(yīng)的位置(arr[p + 1] = temp),每輪循環(huán)結(jié)束都能保證前面的數(shù)據(jù)是升序排列的
<script> var arr = [6, 3, 4, 7, 5, 19, 2]; var length = arr.length; // 進(jìn)行升序排列,大的元素往右邊擠,小的元素往左邊擠 for (var i = 1; i < length; i++) { // i為當(dāng)前元素的下標(biāo) var temp = arr[i]; // p為比對(duì)元素的下標(biāo) p = i - 1; // 如果當(dāng)前元素比目標(biāo)元素小 while (p >= 0 && temp < arr[p]) { // 將比對(duì)元素往右挪一個(gè)位置 arr[p + 1] = arr[p]; // 往左一個(gè)位置找新的比對(duì)元素 p--; } // 將當(dāng)前元素放到合適的位置 arr[p + 1] = temp; } console.log(arr) // [2, 3, 4, 5, 6, 7, 19] </script>
2.快速排序
將一個(gè)數(shù)組的中間元素取出(splice,這個(gè)方法會(huì)改變?cè)瓟?shù)組,同時(shí)將將截取的元素以數(shù)字的形式返回),然后定義兩個(gè)左右空數(shù)據(jù),遍歷這個(gè)原數(shù)組,將小于被取出元素值的元素放入左邊的數(shù)組,反之放入右邊的數(shù)組,一輪循環(huán)之后將這左右兩個(gè)數(shù)組和中間元素拼接起來,同時(shí)對(duì)左右數(shù)組進(jìn)行遞歸調(diào)用
var arr = [4, 3, 6, 7, 5, 19, 2]; var newArr = quickSort(arr); console.log(newArr); function quickSort(arr) { if (arr.length <= 1) return arr; else { var center = parseInt((arr.length - 1) / 2); var centerValue = arr.splice(center, 1)[0]; var left = []; var right = []; for (var i = 0; i < arr.length; i++) { if (arr[i] <= centerValue) { left.push(arr[i]); } else { right.push(arr[i]); } } return quickSort(left).concat(centerValue, quickSort(right)); } }
3.sort排序
<script> var arr = [ {name:"張三",age:18}, {name:"李四",age:16}, {name:"王五",age:10}, {name:"趙六",age:22} ] arr.sort(function(p1,p2){ //p1.age-p2.age就是升序 //p2.age-p1.age就是降序 return p1.age-p2.age }) console.log(arr) // [{name: "王五", age: 10} // {name: "李四", age: 16} // {name: "張三", age: 18} // {name: "趙六", age: 22}] </script>
7.其他方法
數(shù)組反轉(zhuǎn) reverse() 將當(dāng)前數(shù)組反轉(zhuǎn),會(huì)改變當(dāng)前數(shù)組
<script> var arr = [1,2,3,4] arr.reverse() console.log(arr) // [4, 3, 2, 1] </script>
剪接數(shù)組 splice() 會(huì)改變當(dāng)前數(shù)組
可以刪除任意數(shù)組元素,還可以向數(shù)組添加元素
語法:arr.splice(index,num,item1,item2...)
index:規(guī)定從何處添加/刪除元素
num:刪除多少元素
后面的參數(shù)可以是0個(gè)也可以是多個(gè),表示要添加的數(shù)組元素
<script> var arr = [1,2,3,4] // 在下標(biāo)3的位置添加數(shù)組元素 arr.splice(3,0,5) console.log(arr) // [1, 2, 3, 5, 4] // 刪除下標(biāo)為1的數(shù)組元素 arr.splice(1,1) console.log(arr) // [1, 3, 5, 4] // 從下標(biāo)1的位置開始刪除3個(gè)元素,并添加2個(gè)元素 arr.splice(1,3,"life","good") console.log(arr) // [1, "life", "good"] </script>
數(shù)組剪切 slice() 根據(jù)給定的下標(biāo),將兩個(gè)下標(biāo)之間的元素以數(shù)組形式返回,不會(huì)改變?cè)瓟?shù)組
語法:arr.slice(n,m) 將arr[n]到arr[m-1]之間的元素以數(shù)組形式返回
<script> var arr = [1,2,3,4] // 不包含參數(shù)二對(duì)象的下標(biāo)元素 var newArr = arr.slice(1,3) console.log(newArr) // [2, 3] // 默認(rèn)剪切到最后一個(gè)元素 var newArr2 = arr.slice(1) console.log(newArr2) //[2, 3, 4] // 可接受負(fù)數(shù) var newArr3 = arr.slice(0,-1) console.log(newArr3) //[1, 2, 3] </script>
拼接2個(gè)數(shù)組 concat()
不會(huì)改變?cè)瓟?shù)組,而是將拼接后的新數(shù)組返回
<script> var arr = [1,2,3,4] var arr2 = [5,6,7,8] var newArr = arr.concat(arr2) console.log(arr) // [1,2,3,4] console.log(arr2) // [5,6,7,8] console.log(newArr) // [1, 2, 3, 4, 5, 6, 7, 8] </script>
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
本文標(biāo)題:JavaScriptArray對(duì)象使用方法解析
文章出自:http://muchs.cn/article10/gdohdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站營銷、品牌網(wǎng)站設(shè)計(jì)、標(biāo)簽優(yōu)化、網(wǎng)站建設(shè)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)