const bigArr = Array.from({length: 10000}, (_, i) => i + 1);
// 每隔10个元素删除一个
for (let i = 9; i < bigArr.length; i += 10) {
bigArr.splice(i, 1);
}
// 在数组中间位置添加新元素
const middleIndex = Math.floor(bigArr.length / 2);
bigArr.splice(middleIndex, 0, 'newElement');
优化策略及避免性能瓶颈说明:
- 删除操作:采用
for
循环,从索引9开始,每次递增10,直接使用splice
删除元素。由于for
循环的性能相对稳定,这样可以按规律删除元素。虽然splice
在删除元素时会引起数组的重排,但因为是按固定间隔删除,整体性能相对可控。
- 添加操作:使用
Math.floor
计算数组的中间索引位置,然后使用splice
在该位置插入新元素。Math.floor
是一个高效的取整操作,splice
在已知索引位置插入元素时,性能开销主要集中在数组重排,选择中间位置插入可以尽量平衡数组两端的重排开销,避免在数组头部或尾部插入导致大量元素移动带来的性能瓶颈。