如题,求 JS 大佬指点。
目前有一个对象,以下这种形式,共有大概一千个属性,每个属性对应一个长度为 1000 的数组
let obj = {
a: [1,2,3,4...],
b: [9,10,11,...],
...
}
需求是将所有的属性,都只截取前 500 个,后 500 个不要了。
最快的方法是什么,是应该重复 pop 500 次?或者是干脆新建一个数组重新 push 进去?不希望这步操作吃性能。
谢谢大家
1
newbieRenew 2020-11-11 07:26:13 +08:00 via iPhone 3
pop 500 次干嘛?直接 length=500 不就行了
|
2
Cbdy 2020-11-11 07:36:56 +08:00 via Android
@newbieRenew 一楼正解
|
3
lichdkimba 2020-11-11 07:49:34 +08:00
slice 方法?
|
4
christin 2020-11-11 08:45:42 +08:00 via iPhone
@newbieRenew 666
|
5
66beta 2020-11-11 09:03:23 +08:00 via Android 1
就不能查一下 mdn 上 array 的文档吗?
|
6
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 } |
7
yaphets666 2020-11-11 09:13:07 +08:00
slice 就行 但是 slice 是创建了一个新的数组 这个性能不知道比直接 length=500 差还是怎么样
|
8
yaphets666 2020-11-11 09:39:12 +08:00 3
测试了一下 一千万长度的数组,如果只截取前 500 的话.slice 方法和直接 length=500 都在 1ms 内. 截取的越多,比如前 500 万个元素.length 的优势越大.
|