JavaScript 中,想删除数组的最后 N 项(重复很多次),最快的方法是什么?

2020-11-11 07:02:31 +08:00
 black11black

如题,求 JS 大佬指点。

目前有一个对象,以下这种形式,共有大概一千个属性,每个属性对应一个长度为 1000 的数组

let obj = {
    a: [1,2,3,4...],
    b: [9,10,11,...],
    ...
}

需求是将所有的属性,都只截取前 500 个,后 500 个不要了。

最快的方法是什么,是应该重复 pop 500 次?或者是干脆新建一个数组重新 push 进去?不希望这步操作吃性能。

谢谢大家

1232 次点击
所在节点    问与答
8 条回复
newbieRenew
2020-11-11 07:26:13 +08:00
pop 500 次干嘛?直接 length=500 不就行了
Cbdy
2020-11-11 07:36:56 +08:00
@newbieRenew 一楼正解
lichdkimba
2020-11-11 07:49:34 +08:00
slice 方法?
christin
2020-11-11 08:45:42 +08:00
66beta
2020-11-11 09:03:23 +08:00
就不能查一下 mdn 上 array 的文档吗?
mascteen
2020-11-11 09:06:32 +08:00
function cut500(obj) {
const result = {}
for (const i in obj) {
result[i] = obj[i].slice(0,500)
}
return result
}
yaphets666
2020-11-11 09:13:07 +08:00
slice 就行 但是 slice 是创建了一个新的数组 这个性能不知道比直接 length=500 差还是怎么样
yaphets666
2020-11-11 09:39:12 +08:00
测试了一下 一千万长度的数组,如果只截取前 500 的话.slice 方法和直接 length=500 都在 1ms 内. 截取的越多,比如前 500 万个元素.length 的优势越大.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/723807

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX