1. 
          

          1. 新聞動(dòng)態(tài)

            如何在 JavaScript 中用初始值填充數組

            常見(jiàn)問(wèn)題 發(fā)布者:ou3377 2021-12-15 09:14 訪(fǎng)問(wèn)量:105

            1. 用 primitives 填充數組

            假設我們想用給定值初始化一個(gè)長(cháng)度為3的數組。

            array.fill() 方法可以用一個(gè)固定值填充一個(gè)數組中從起始索引到終止索引內的全部元素。

            再結合使用 Array(n):


            const length = 3;
            const filledArray = Array(length).fill(0);
            filledArray; // [0, 0, 0]

            Array(length).fill(initialValue) 是一種創(chuàng )建具有所需長(cháng)度并使用原始值(數字、字符串、布爾值)初始化的數組的便捷方法。


            2. 用對象填充數組

            如果需要用對象填充數組怎么辦?


            2.1 使用array.fill()

            上述方法同樣支持傳遞對象為初始值:


            const length = 3;
            const filledArray = Array(length).fill({ value: 0 });
            filledArray; // [{ value: 0 }, { value: 0 }, { value: 0 }]

            Array(length).fill({ value: 0 })創(chuàng )建一個(gè) length 數組3,并為每個(gè)項目分配{ value: 0 },要注意的是:分配相同的對象實(shí)例。

            這種方法創(chuàng )建了一個(gè)具有相同對象實(shí)例的數組。如果碰巧修改了數組中的任何一項,那么數組中的每一項都會(huì )受到影響:


            const length = 3;
            const filledArray = Array(length).fill({ value: 0 });
            filledArray; // [{ value: 0 }, { value: 0 }, { value: 0 }]
            filledArray[1].value = 3;
            filledArray; // [{ value: 3 }, { value: 3 }, { value: 3 }]

            改變數組的第二個(gè)項目filledArray[1].value = 3會(huì )改變數組中的所有項目。


            2.2 使用 Array.from()

            Array.from() 方法對一個(gè)數組或可迭代對象創(chuàng )建一個(gè)新的,淺拷貝的數組實(shí)例。

            因此利用 Array.from() 方法可以輕松地創(chuàng )建和初始化具有不同對象實(shí)例的數組:


            const length = 3;
            const filledArray = Array.from(Array(length), () => {
             return { value: 0 };
            });
            filledArray; // [{ value: 0 }, { value: 0 }, { value: 0 }]

            如果修改數組中的任何項目,則只有該項目會(huì )受到影響,其他項目不受影響:


            const length = 3;
            const filledArray = Array.from(Array(length), () => {
             return { value: 0 };
            });
            filledArray; // [{ value: 0 }, { value: 0 }, { value: 0 }]
            filledArray[1].value = 3;
            filledArray; // [{ value: 0 }, { value: 3 }, { value: 0 }]

            filledArray[1].value = 3 只修改數組的第二項。


            2.3 使用 array.map() 結合 array.fill()

            既然 Array(n) 返回一個(gè)數組,為何還需要使用 Array.from 呢,直接使用 map 不好嗎,問(wèn)題是 array.map()跳過(guò) empty 元素:


            const length = 3;
            const filledArray = Array(length).map(() => {
             return { value: 0 };
            });
            filledArray; // [empty × 3]

            解決方法很簡(jiǎn)單,將 empty 數組 fill null 即可:


            const length = 3;
            const filledArray = Array(length).fill(null).map(() => {
             return { value: 0 };
            });

            filledArray; // [{ value: 0 }, { value: 0 }, { value: 0 }]



            關(guān)鍵字: JavaScript 初始值填充數組

            文章連接: http://www.gostscript.com/cjwt/822.html

            版權聲明:文章由 晨展科技 整理收集,來(lái)源于互聯(lián)網(wǎng)或者用戶(hù)投稿,如有侵權,請聯(lián)系我們,我們會(huì )立即刪除。如轉載請保留

            双腿国产亚洲精品无码不卡|国产91精品无码麻豆|97久久久久久久极品|无码人妻少妇久久中文字幕
                1.