日韩国产精品99成人不卡在线无毒|狠狠躁夜夜爽一级二级精品|亚洲日日噜噜孕妇中文字幕|日韩久草中文三级片

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

如何在 JavaScript 中用初始值填充數(shù)組

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

1. 用 primitives 填充數(shù)組

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

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

再結(jié)合使用 Array(n):


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

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


2. 用對(duì)象填充數(shù)組

如果需要用對(duì)象填充數(shù)組怎么辦?


2.1 使用array.fill()

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


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 數(shù)組3,并為每個(gè)項(xiàng)目分配{ value: 0 },要注意的是:分配相同的對(duì)象實(shí)例。

這種方法創(chuàng)建了一個(gè)具有相同對(duì)象實(shí)例的數(shù)組。如果碰巧修改了數(shù)組中的任何一項(xiàng),那么數(shù)組中的每一項(xiàng)都會(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 }]

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


2.2 使用 Array.from()

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

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


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

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


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 只修改數(shù)組的第二項(xiàng)。


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

既然 Array(n) 返回一個(gè)數(shù)組,為何還需要使用 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 數(shù)組 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 初始值填充數(shù)組

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

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