最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文徹底解決JavaScript數(shù)組

 更新時(shí)間:2025年08月04日 09:45:26   作者:I'mxx  
數(shù)組對(duì)于程序語言的重要性自不必多說,而在使用javascript的時(shí)候難免也會(huì)需要用到數(shù)組操作,這篇文章主要介紹了JavaScript數(shù)組的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、數(shù)組的原生方法

原生方法描述返回值說明
push()數(shù)組末尾添加元素返回?cái)?shù)組新的長(zhǎng)度
pop()刪除并返回?cái)?shù)組的最后一個(gè)元素返回被刪除的最后一個(gè)元素
unshift()在數(shù)組開頭添加一個(gè)或多個(gè)元素返回?cái)?shù)組新的長(zhǎng)度
shift()刪除并返回?cái)?shù)組的第一個(gè)元素返回被刪除的第一個(gè)元素
splice()截取或刪除數(shù)組中的某些內(nèi)容,可插入新元素返回被刪除的元素組成的數(shù)組
slice()截取數(shù)組中的一部分,不改變?cè)瓟?shù)組返回新數(shù)組
reverse()反轉(zhuǎn)數(shù)組返回反轉(zhuǎn)后的數(shù)組
sort()對(duì)數(shù)組進(jìn)行排序返回排序后的數(shù)組
concat()多個(gè)數(shù)組進(jìn)行拼接返回拼接后的新數(shù)組
join()將數(shù)組的每一項(xiàng)連接成一個(gè)字符串返回拼接后的字符串
let arr = [1, 2, 3];
let newArr = arr.xxx();
console.log(arr);
console.log(newArr);//返回的值


arr.push(4);           // arr => [1, 2, 3, 4]
arr.pop();             // arr => [1, 2],返回 3
arr.unshift(0);        // arr => [0, 1, 2, 3] 返回 4
arr.shift();           // arr => [2, 3],返回 1
arr.splice(1, 1);      // arr => [1, 3],返回 [2]
arr.splice(1, 2, 'a', 'b');//arr =>[1, 'a', 'b', 2] ,返回[2,3]
arr.slice(0, 1);       // arr 不變,返回 [1]
arr.reverse();         // arr => [3,2,1],返回[3,2,1]
arr.sort();            // arr => [1,2,3] ,返回[1,2,3]
arr.concat([4, 5]);    // arr => [1,2,3] ,返回 [1, 2, 3, 4, 5]
arr.join('-');         // arr =>[1,2,3] 返回 1-2-3
原生方法描述返回值說明
toString()將數(shù)組轉(zhuǎn)化為字符串返回字符串
toLocalString()使用本地化字符串表示數(shù)組返回本地化格式的字符串
        let arr = [1, 2, 3]
        let newArr = arr.toString();
        console.log(newArr);//1,2,3
        console.log(arr);//[1, 2, 3]
原生方法描述返回值說明
indexOf()從前往后查某個(gè)元素第一次出現(xiàn)的位置返回該元素索引,未找到返回-1
lastIndexOf()從后往前查某元素最后一次出現(xiàn)的位置返回該元素索引,未找到返回-1
        let arr = [1, 2, 3, 2];
        let newArr = arr.indexOf(2);
        console.log(newArr);//1
        console.log(arr);//[1, 2, 3, 2]
		let newArr2 = arr.indexOf(2);
		console.log(newArr2);//3
原生方法描述返回值說明
every()檢查數(shù)組中是否所有元素都滿足條件返回布爾值
some()檢查數(shù)組中是否有至少一個(gè)元素滿足條件返回布爾值
filter()過濾出符合條件的元素返回符合條件的新數(shù)組
forEach()對(duì)數(shù)組的每個(gè)元素執(zhí)行一次提供的函數(shù)沒有返回值(返回 undefined
map()對(duì)數(shù)組每個(gè)元素調(diào)用函數(shù),生成新數(shù)組返回新數(shù)組
        let arr = [1, 2, 3];

        // every()
        //arr.every(function (item, index, arr) {})
        let allPositive = arr.every(n => n > 0);
        console.log(allPositive);//true

        // some()
        let hasBig = arr.some(n => n > 2);
        console.log(hasBig);//true
        let arr = [1, 2, 3];

        // forEach()
        arr.forEach(n => console.log(n)); 
        // 輸出 1 2 3

        // map()
        let doubled = arr.map(n => n * 2);
        console.log(doubled);// doubled => [2, 4, 6]


        // filter() 符合條件的被留下來
        let even = arr.filter(n => n % 2 === 0);
        console.log(even);// even => [2]

原生方法描述返回值說明
reduce()從左到右依次對(duì)數(shù)組元素執(zhí)行累積操作(如求和、合并)返回最終的累積結(jié)果
reduceRight()從右到左依次對(duì)數(shù)組元素執(zhí)行累積操作返回最終的累積結(jié)果
		let arr = [1, 2, 3];
        // reduce()
        //語法
//arr.reduce(function (prev, item, index, arr) {}, 初始值)
        
        let sum = arr.reduce((acc, n) => acc + n, 0);
        console.log(sum); // sum => 6


        // reduceRight()
        let sumRight = arr.reduceRight((acc, n) => acc + n);
        console.log(sumRight);// sumRight => 6

二、數(shù)組去重

1. Array.from(new Set)

        // 1.利用set去重 
        // Set是es6新增的數(shù)據(jù)結(jié)構(gòu),似于數(shù)組,但它的一大特性就是所有元素都是唯一的,沒有重復(fù)的值,我們一般稱為集合
        // Array.from()就是將一個(gè)類數(shù)組對(duì)象或者可遍歷對(duì)象轉(zhuǎn)換成一個(gè)真正的數(shù)組,也是ES6的新增方法
        let list = [8, 1, 1, 2, 6, 7, 8, '你是最棒的',]
        //let newList = new Set(list);
        let newList = Array.from(new Set(list));
        console.log(newList);//[8,1,2,6,7,'你是最棒的']

2. includes

        let list = [8, 1, 1, 2, 6, 7, 8, '你是最棒的',];
        let newList2 = []
        list.forEach((item) => {

            if (!newList2.includes(item)) {
                newList2.push(item)
            }
        })
        console.log('newList2', newList2);

3. map去重

        //3.利用map去重
        //map數(shù)據(jù)結(jié)構(gòu)是es6中新出的語法,其本質(zhì)也是鍵值對(duì),只是其鍵不局限于普通對(duì)象的字符串 
        let list = [8, 1, 1, 2, 6, 7, 8, '你是最棒的',];
        let newList3 = [];
        let map = new Map()
        list.forEach((item) => {
            if (!map.has(item)) {
                map.set(item, true)
                newList3.push(item)
            }
        })
        console.log('newList3', newList3);

4. indexOf去重

        //4.利用indexOf去重  
        //indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置。如果沒有找到匹配的字符串則返回 -1 
        let list = [8, 1, 1, 2, 6, 7, 8, '你是最棒的',];
        let newList4 = [];
        list.forEach((item) => {
            if (newList4.indexOf(item) === -1) {
                newList4.push(item)
            }
        })
        console.log('newList4', newList4);;

5. 利用Array.filter和map對(duì)象數(shù)組去重

{} === {}
// false 引用地址不一樣

        //5.利用filter加map去重
        let map = new Map();

        let list3 = [{
            name: '學(xué)生1',
            id: 1
        },
        {
            name: '學(xué)生1',
            id: 2
        },
        {
            name: '學(xué)生2',
            id: 3
        },
        {
            name: '學(xué)生3',
            id: 3
        }
        ]
        function unique(list3, key) {
            return list3.filter(item => {
                const val = item[key].toString();
                if (!map.has(val)) {
                    map.set(val, true);
                    return true;
                } else {
                    return false;
                }
            })
        }
        console.log(unique(list3, 'name'));

三、數(shù)組的遍歷方法

方法是否改變?cè)瓟?shù)組特點(diǎn)
forEach()數(shù)組方法,不改變?cè)瓟?shù)組,沒有返回值
map()數(shù)組方法,不改變?cè)瓟?shù)組,有返回值,可鏈?zhǔn)秸{(diào)用
filter()數(shù)組方法,過濾數(shù)組,返回包含符合條件的元素的數(shù)組,可鏈?zhǔn)秸{(diào)用
for...offor…of遍歷具有Iterator迭代器的對(duì)象的屬性,返回的是數(shù)組的元素、對(duì)象的屬性值,不能遍歷普通的obj對(duì)象,將異步循環(huán)變成同步循環(huán)
every() 和 some()數(shù)組方法,some()只要有一個(gè)是true,便返回true;而every()只要有一個(gè)是false,便返回false
find() 和 findIndex()數(shù)組方法,find()返回的是第一個(gè)符合條件的值;findIndex()返回的是第一個(gè)返回條件的值的索引值
reduce() 和 reduceRight()數(shù)組方法,reduce()對(duì)數(shù)組正序操作;reduceRight()對(duì)數(shù)組逆序操作

四、forEach 和 map 方法

這方法都是用來遍歷數(shù)組的,兩者區(qū)別如下:

  • forEach()方法會(huì)針對(duì)每一個(gè)元素執(zhí)行提供的函數(shù),對(duì)數(shù)據(jù)的操作會(huì)改變?cè)瓟?shù)組,該方法沒有返回值;
  • map()方法不會(huì)改變?cè)瓟?shù)組的值,返回一個(gè)新數(shù)組,新數(shù)組中的值為原數(shù)組調(diào)用函數(shù)處理之后的值

五、字符串和數(shù)組的轉(zhuǎn)換

1. 數(shù)組轉(zhuǎn)字符串

方法描述
toString()arr.toString()
join()join(‘’)可以傳入自定義的分隔符

2. 字符串轉(zhuǎn)數(shù)組

方法描述
split()string.split(‘’),可以傳入自定義分隔符
ES6展開運(yùn)算符[ …string ]
ES6解構(gòu)賦值
Array.from()Array.from(string)

六、類數(shù)組對(duì)象定義?理解?如何轉(zhuǎn)換為數(shù)組?如何遍歷類數(shù)組?

1. 類數(shù)組對(duì)象的定義

類數(shù)組對(duì)象,就是指可以通過索引屬性訪問元素并且擁有l(wèi)ength屬性的對(duì)象。它沒有 Array的 內(nèi)置方法。

2. 常見的類數(shù)組對(duì)象

  • 函數(shù)里面的參數(shù)對(duì)象arguments

什么是arguments?
(1)在js中在調(diào)用一個(gè)函數(shù)的時(shí)候,我們經(jīng)常會(huì)給這個(gè)函數(shù)傳遞一些參數(shù),js把傳入到這個(gè)函數(shù)的全部參數(shù)存儲(chǔ)在一個(gè)叫做arguments的東西里面
(2)一個(gè)特殊的對(duì)象,屬性名按照傳入?yún)?shù)的序列來。第一個(gè)參數(shù)的屬性名是’0’,第二個(gè)參數(shù)的屬性名是’1’

    <script>
       function example() {
           console.log(arguments); // { '0': 'a', '1': 'b', length: 2 }
       }

       example('a', 'b');
   </script>

  • DOM方法的返回結(jié)果
document.querySelectorAll()  //返回一個(gè) NodeList,它是一個(gè)類數(shù)組對(duì)象。
document.getElementsByTagName()  //返回一個(gè) HTMLCollection,也是一個(gè)類數(shù)組對(duì)象。

3. 類數(shù)組轉(zhuǎn)換為數(shù)組的方法

(1)通過 call 調(diào)用數(shù)組的 slice 方法來實(shí)現(xiàn)轉(zhuǎn)換

Array.prototype.slice.call(arrayLike);

(2)通過 call 調(diào)用數(shù)組的 splice 方法來實(shí)現(xiàn)轉(zhuǎn)換

Array.prototype.splice.call(arrayLike, 0);

(3)通過 apply 調(diào)用數(shù)組的 concat 方法來實(shí)現(xiàn)轉(zhuǎn)換

Array.prototype.concat.apply([], arrayLike);

(4)通過 Array.from 方法來實(shí)現(xiàn)轉(zhuǎn)換

Array.from(arrayLike);

4. 遍歷類數(shù)組

(1)將數(shù)組的方法應(yīng)用到類數(shù)組上,這時(shí)候就可以使用call和apply方法

(2)使用Array.from方法將類數(shù)組轉(zhuǎn)化成數(shù)組

(3)使用展開運(yùn)算符將類數(shù)組轉(zhuǎn)化成數(shù)組

總結(jié)

到此這篇關(guān)于JavaScript數(shù)組的文章就介紹到這了,更多相關(guān)js數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

罗山县| 和政县| 江城| 沾益县| 宜良县| 五华县| 赤城县| 浑源县| 沙坪坝区| 南京市| 岫岩| 泽库县| 监利县| 邹平县| 嘉鱼县| 沁源县| 崇明县| 永和县| 上高县| 平安县| 夹江县| 丰台区| 临潭县| 弥勒县| 离岛区| 锡林郭勒盟| 会东县| 平舆县| 方山县| 萨迦县| 聂拉木县| 日土县| 荣成市| 中宁县| 抚州市| 兴海县| 泸州市| 黎城县| 板桥市| 芜湖市| 伊吾县|