【发布时间】:2015-08-17 15:27:51
【问题描述】:
有没有Array方法可以代替下面的函数(类似a.splice(some, tricky, arguments))?
function resize(arr, newSize, defaultValue) {
if (newSize > arr.length)
while(newSize > arr.length)
arr.push(defaultValue);
else
arr.length = newSize;
}
如果没有,是否有更好/更好/更短/的实现?如果数组应该增长并在收缩时删除值,该函数应该附加一个默认值。
【问题讨论】:
-
arr.length = newSize;会被undefined填满 -
抛开效率不谈,您的
while循环会将太多值推送到数组中。应该是while (newSize > arr.length) -
如果你想提高效率,你不会在每次推送/弹出时增加/缩小数组。最好有一个足够大的数组并在必要时缩小或仅在意识到数组不够大时才增长
-
嗯,有Array.prototype.fill,但尚未得到广泛支持。
-
你能解释一下为什么你首先需要这种行为吗?
标签: javascript arrays