我有一个数组,我想从中删除一些元素。我不能使用 Array.prototype.filter()
,因为我想就地修改数组(因为它节省了内存分配,而且对我来说更重要的是,它使代码在我的用例中更简单)。是否有我可以使用的 filter
的就地替代方案,也许类似于 Array.prototype.forEach()
可以用作 —17fdd654cb0f6c5ff3ff774-4- Array.prototype.map()
的就地变体?
编辑:根据要求的最小示例:
function someCallback(array) {
// do some stuff
array.filterInPlace(function(elem) {
var result = /* some logic */
return result;
})
// do some more stuff
}
原文由 Perseids 发布,翻译遵循 CC BY-SA 4.0 许可协议
不,但是自己编写并不难。这是一种挤出所有不符合条件的值的方法。
condition
被设计为与传递给Array#filter
的回调具有相同的签名,即(value, index, array)
。为了与Array#filter
完全兼容,您还可以接受第四个thisArg
参数。使用
forEach
使用
forEach
有一个小优点,它会跳过空槽。这个版本:thisArg