我有一個包含一堆布林值的陣列和一個向其中添加n 個新布林值的函式。他們都應該從他們的默認值開始,所以一種方法是
const array = [];
function extendArrayBy(amountOfNewItems) {
for (let i = 0; i < amountOfNewItems; i ) {
array.push(false);
}
}
extendArrayBy(3);
console.log(array);
但是有一個Array.prototype.fill()函式可能會“更優雅”。我嘗試了什么:
let array = [];
const amountOfNewItems = 3;
array = array.fill(false, array.length, array.length amountOfNewItems);
console.log(array);
不幸的是,修改后的陣列不包含新專案。有人知道我錯過了什么嗎?
uj5u.com熱心網友回復:
正如評論中已經說過的那樣。fill不添加新元素。
該
fill()方法將陣列中的所有元素更改為靜態值,從開始索引(默認 0)到結束索引(默認 array.length)。它回傳修改后的陣列。
您可以.length在致電之前更改fill:
let array = [true, false, true];
const amountOfNewItems = 3;
array.length = array.length amountOfNewItems
array = array.fill(false, array.length - amountOfNewItems, array.length);
console.log(array);
uj5u.com熱心網友回復:
試試這個:
let amountOfNewItems = 3;
let array = [];
array = array.concat(Array(amountOfNewItems).fill(false));
console.log(array);
let array2 = [1,2,3];
array2 = array2.concat(Array(amountOfNewItems).fill(false));
console.log(array2);
uj5u.com熱心網友回復:
這是一個將具有給定值的陣列擴展給定數量的函式。
let arr = ['A', 1, {k: 'v'}];
/** Extends an array with a given *** value at a given amount.
* @param {Array} array
* @param {Any} element
* @param {Number} size
* @return {Array}
*/
const extend = (array, element, size = 1) => {
let extra = element == undefined ? null : element;
const extArr = [...new Array(size)].map(e => extra);
return [...array, ...extArr];
};
console.log(extend(arr, false, 7));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/427164.html
標籤:javascript
