gpt4 book ai didi

javascript - 在大量对象中改变单个对象属性的最快方法是什么?

转载 作者:行者123 更新时间:2023-11-30 21:09:51 25 4
gpt4 key购买 nike

我正在我的应用程序中创建一个类似于 Reddit 的投票系统。每个对象(线程)都有一个 score 属性和一个类似于父对象的对象数组(将其视为对线程的注释)。
这是一个简化的示例:

{
id: '123fdx12c1',
author: 'Anon',
score: 1,
users: [
{
id: '321fdx12c1',
name: 'anon',
score: 1
},
{
id: 'asd123f1fd1',
name: 'anon',
score: 1
}
]
}

现在想象一下像这样的一大堆对象。每当用户投票时,都会派发具有适当 ID 的操作来查找匹配的 ID 并更改分值。
我的做法:

case 'VOTE':
return state.map((question) => {
question.users = question.users.map((user) => {
if (user.id == action.id) {
return {
...user,
voteStatus: action.voteStatus,
score: action.score
}
}
return user;
});
if (question.id == action.id) {
return {
...question,
voteStatus: action.voteStatus,
score: action.score
}
}
return question;
});

它映射整个数组只是为了改变一个对象的一个​​属性。有没有更快的方法?

最佳答案

最快的是 id 查找,因此即使对于很多 id,通过 id 查找项目几乎是相同的恒定时间:

{
'123fdx12c1' : {
author: 'Anon',
score: 1,
users: [ '321fdx12c1', 'asd123f1fd1' ]
},
'321fdx12c1' : {
name: 'anon',
score: 1
},
'asd123f1fd1' : {
name: 'anon',
score: 1
}
}

附带说明一下,一般情况下,解释型语言中的函数调用比本地代码慢。
在某些浏览器中,.map 可能比 for 循环慢 10-100 倍。

关于javascript - 在大量对象中改变单个对象属性的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46268564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com