Vue操作數(shù)組的幾種常用方法小結(jié)
一、map方法 (返回一個(gè)新的數(shù)組 新數(shù)組中的元素是經(jīng)過map函數(shù)內(nèi)部代碼塊處理過的數(shù)據(jù))
代碼示例:
testMap() { ?? ??? ?let array = [1, 2, 3, 4]; ?? ??? ?let newArray = array.map(item=>{ ?? ??? ?return item += 1; ?? ??? ?}); ?? ??? ?console.log(newArray); ?? ?}
結(jié)果:
注意點(diǎn):map函數(shù)內(nèi)部必須要有return 將數(shù)據(jù)返回 否則默認(rèn)返回 undefined如果不加 return 如下:
代碼示例:
testMap() { ?? ??? ?let array = [1, 2, 3, 4]; ?? ??? ?let newArray = array.map(item=>{ ?? ??? ?item += 1; ?? ??? ?}); ?? ??? ?console.log(newArray); ?? ?}
結(jié)果:
還有種省略寫法 箭頭函數(shù)省略return (不推薦這種寫法)代碼示例:
testMap() { ?? ??? ?let array = [1, 2, 3, 4]; ?? ??? ?let newArray = array.map(item=> item += 1 ); ?? ??? ?console.log(newArray); ?? ?}
結(jié)果:
可以看到和第一種帶return的相比 item=>{return item += 1; }
少了大括號(hào) 和 return 即 item=> item += 1
不推薦這種省略寫法
二、filter方法 (返回 符合過濾條件的元素組成的新數(shù)組)
代碼示例:
testFilter() { ?? ??? ?let array = [1, 2, 3, 4]; ?? ??? ?let newArray = array.filter(item=>{ ?? ??? ?return item > 2 ; ?? ??? ?}); ?? ??? ?console.log(newArray);
結(jié)果:
類似于map函數(shù) 也需要有返回值 否則會(huì)返回一個(gè)空數(shù)組
例:
testFilter() { let array = [1, 2, 3, 4]; let newArray = array.filter(item=>{ item > 2 ; }); console.log(newArray); }
結(jié)果:
三、forEach方法 (無返回值 遍歷數(shù)組的每一個(gè)元素 適用于不處理數(shù)組下標(biāo)或者不需要使用break的情況)
代碼示例:
結(jié)果:
注意 改變item值 并不會(huì)改變?cè)瓟?shù)組中的元素值
例如:
testForEach() { let array = [1, 2, 3, 4]; array.forEach(item => { item = item +1; }); console.log(array); }
結(jié)果:
并且forEach函數(shù)內(nèi) 不支持 continue 和 break 操作 (普通for 循環(huán)支持這兩個(gè)操作)
直接語法校驗(yàn)不通過
如果想在forEach中使用 continue 操作 可以 使用return 即可 (注意這里的return 功能和 continue一樣 是結(jié)束本次循環(huán)開始下一次循環(huán))
testForEach() { let array = [1, 2, 3, 4]; let newArray = []; array.forEach(item => { if(item ===2 ){ return; } newArray.push(item); }); console.log(newArray); }
結(jié)果:
四、find方法 (返回符合條件的第一個(gè)元素 如果沒有符合條件的 返回undefined) findIndex方法(返回符合條件的第一個(gè)元素位置 如果沒有符合條件的返回 -1)
testFindAndFindIndex() { let array = [1, 2, 3, 4]; let item1 = array.find(item=> item > 3); console.log(item1); let index1 = array.findIndex(item=> item > 3); console.log(index1); let item2 = array.find(item=> item > 4); console.log(item2); let index2 = array.findIndex(item=> item > 4); console.log(index2); }
結(jié)果:
五、some方法 (如果有任何一個(gè)符合條件的元素 返回true 否則返回fasle) every方法(所有元素都符合條件才返回true 否則返回false)
代碼示例:
testSomeAndEvery() { let array = [1, 2, 3, 4]; let flagSome = array.some(item=> item > 3); console.log(flagSome); let indexEvery = array.every(item=> item > 3); console.log(indexEvery); }
結(jié)果:
六、includes方法
參數(shù):數(shù)值 -------- 返回值:true/false
includes()
方法------是查看數(shù)組中是否存在這個(gè)元素,存在就返回true,不存在就返回false
const obj1 = { a: 1 }; const obj2 = { b: 2 }; const obj3 = { a:5 , c: 3 }; //對(duì)象合并,把后面對(duì)像合并到第一個(gè)對(duì)象,對(duì)象里相同的屬性會(huì)覆蓋 Object.assign(obj1, obj2, obj3); console.log(obj1); // { a: 5, b: 2 , c:3}
七、Array.from()方法
作用:將一個(gè)類數(shù)組對(duì)象或者可遍歷對(duì)象轉(zhuǎn)換成一個(gè)真正的數(shù)組
類數(shù)組對(duì)象:最基本的要求就是具體length屬性的對(duì)象;
類數(shù)組對(duì)象中必須具有l(wèi)ength屬性,用于指定數(shù)組的長(zhǎng)度。如果沒有l(wèi)ength屬性,那么類數(shù)組轉(zhuǎn)換后的數(shù)組是一個(gè)空數(shù)組;
類數(shù)組對(duì)象的屬性名必須為數(shù)值型或者是字符串型的數(shù)字
Array.from還可以接收第二個(gè)參數(shù),作用類似于數(shù)組的map方法,用來對(duì)數(shù)組中每個(gè)元素進(jìn)行處理,然后再將處理后的值放入返回一個(gè)新的數(shù)組
let arr = [2,4,5,6,1,7]; let set = new Set(arr); console.log(Array.from(set,item=>item+1));// [3,5,6,7,2,8]
將Set結(jié)構(gòu)的數(shù)據(jù)轉(zhuǎn)換為真正的數(shù)組
let arr = [2,4,5,6,1,7]; let set = new Set(arr); console.log(Array.from(set));// [2,4,5,6,1,7]
將字符串轉(zhuǎn)換為數(shù)組
let str = “hello world!” console.log(Array.from(str));//[“h”, “e”, “l(fā)”, “l(fā)”, “o”, " ", “w”, “o”, “r”, “l(fā)”, “d”, “!”]
函數(shù)可接受3個(gè)參數(shù)(后兩個(gè)參數(shù)可以沒有):
第一個(gè)表示將被轉(zhuǎn)換的可迭代對(duì)象(如果只有一個(gè)參數(shù)就是把形參轉(zhuǎn)變成數(shù)組)
第二個(gè)是回調(diào)函數(shù),將對(duì)每個(gè)數(shù)組元素應(yīng)用該回調(diào)函數(shù),然后返回新的值到新數(shù)組,
第三個(gè)是回調(diào)函數(shù)內(nèi)this的指向。
let arr = [1, 2, 3]; let obj = { double(n) { return n * 2; } } console.log(Array.from(arr, function (n){ return this.double(n); }, obj)); // [2, 4, 6]
//拿到選中的去重 hasMulitIds = Array.from(new Set(hasMulitIds))
到此這篇關(guān)于Vue操作數(shù)組的幾種常用方法小結(jié)的文章就介紹到這了,更多相關(guān)Vue操作數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Vue實(shí)現(xiàn)本地消息隊(duì)列MQ的示例詳解
這篇文章為大家詳細(xì)主要介紹了如何基于Vue實(shí)現(xiàn)本地消息隊(duì)列MQ, 讓消息延遲消費(fèi)或者做緩存,文中的示例代碼講解詳細(xì),需要的可以參考一下2024-02-02Vue3+Vite4項(xiàng)目進(jìn)行性能優(yōu)化的配置方案
這篇文章主要為大家詳細(xì)介紹了Vue3如何結(jié)合Vite4對(duì)項(xiàng)目進(jìn)行性能優(yōu)化的相關(guān)配置,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04vue.js實(shí)現(xiàn)單選框、復(fù)選框和下拉框示例
本篇文章主要介紹了vue.js實(shí)現(xiàn)單選框、復(fù)選框和下拉框示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Vue實(shí)現(xiàn)移動(dòng)端左右滑動(dòng)效果的方法
最近得到一個(gè)新需求,需要在Vue項(xiàng)目的移動(dòng)端頁面上加上左右滑動(dòng)效果,經(jīng)過一番折騰,最終決定四月vue-touch。下面小編把實(shí)現(xiàn)代碼分享給大家,感興趣的朋友一起看看吧2018-11-11Vue2.x中的父子組件相互通信的實(shí)現(xiàn)方法
這篇文章主要介紹了Vue2.x中的父子組件相互通信,需要的朋友可以參考下2017-05-05關(guān)于Vue中的全局導(dǎo)航守衛(wèi)(beforeEach、afterEach)
這篇文章主要介紹了關(guān)于Vue中的全局導(dǎo)航守衛(wèi)(beforeEach、afterEach),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Vue3+Vue-cli4項(xiàng)目中使用騰訊滑塊驗(yàn)證碼的方法
這篇文章主要介紹了Vue3+Vue-cli4項(xiàng)目中使用騰訊滑塊驗(yàn)證碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11