咨詢(xún)電話(huà)
微信掃一掃
新聞動(dòng)態(tài)
如何在 JavaScript 中用初始值填充數組
常見(jiàn)問(wèn)題 發(fā)布者:ou3377 2021-12-15 09:14 訪(fǎng)問(wèn)量:105
假設我們想用給定值初始化一個(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)度并使用原始值(數字、字符串、布爾值)初始化的數組的便捷方法。
如果需要用對象填充數組怎么辦?
上述方法同樣支持傳遞對象為初始值:
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ì )改變數組中的所有項目。
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 只修改數組的第二項。
既然 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 }]
【推薦閱讀】
移動(dòng)網(wǎng)站將如何推動(dòng)銷(xiāo)售或吸引更多客戶(hù)?
從ASCII碼->Unicode->UTF-8歷史變遷,及其差異
改善網(wǎng)絡(luò )營(yíng)銷(xiāo)推廣方案——推廣概況
關(guān)鍵字: JavaScript 初始值填充數組
文章連接: http://www.gostscript.com/cjwt/822.html
版權聲明:文章由 晨展科技 整理收集,來(lái)源于互聯(lián)網(wǎng)或者用戶(hù)投稿,如有侵權,請聯(lián)系我們,我們會(huì )立即刪除。如轉載請保留
晨展解決方案
晨展新聞