如题,求 JS 大佬指点。
目前有一个对象,以下这种形式,共有大概一千个属性,每个属性对应一个长度为 1000 的数组
let obj = {
a: [1,2,3,4...],
b: [9,10,11,...],
...
}
需求是将所有的属性,都只截取前 500 个,后 500 个不要了。
最快的方法是什么,是应该重复 pop 500 次?或者是干脆新建一个数组重新 push 进去?不希望这步操作吃性能。
谢谢大家
如题,求 JS 大佬指点。
目前有一个对象,以下这种形式,共有大概一千个属性,每个属性对应一个长度为 1000 的数组
let obj = {
a: [1,2,3,4...],
b: [9,10,11,...],
...
}
需求是将所有的属性,都只截取前 500 个,后 500 个不要了。
最快的方法是什么,是应该重复 pop 500 次?或者是干脆新建一个数组重新 push 进去?不希望这步操作吃性能。
谢谢大家
|
1
pop 500 次干嘛?直接 length=500 不就行了
|
|
CbdyNov 11, 2020 via Android
2
@newbieRenew 一楼正解
|
|
lichdkimbaNov 11, 2020
3
slice 方法?
|
|
christinNov 11, 2020 via iPhone
4
@newbieRenew 666
|
|
5
就不能查一下 mdn 上 array 的文档吗?
|
|
mascteenNov 11, 2020
6
function cut500(obj) {
const result = {} for (const i in obj) { result[i] = obj[i].slice(0,500) } return result } |
|
yaphets666Nov 11, 2020
7
slice 就行 但是 slice 是创建了一个新的数组 这个性能不知道比直接 length=500 差还是怎么样
|
|
8
测试了一下 一千万长度的数组,如果只截取前 500 的话.slice 方法和直接 length=500 都在 1ms 内. 截取的越多,比如前 500 万个元素.length 的优势越大.
|