How to update an element in a redux/vuex store in O(1)?
How do you usually update an element(hash) in a list in the store (redux, vuex) in O(1)?
I need the order of the elements, it's important (I can add/remove elements from the list). I will update elements on each millisecond, so a lot of updates will be made.
My question is, it's very bad to save the index of the element as a property of the element? Or if the list has 500-1000 elements, it's ok to use .find
by Id for example?
javascript reactjs vue.js redux vuex
add a comment |
How do you usually update an element(hash) in a list in the store (redux, vuex) in O(1)?
I need the order of the elements, it's important (I can add/remove elements from the list). I will update elements on each millisecond, so a lot of updates will be made.
My question is, it's very bad to save the index of the element as a property of the element? Or if the list has 500-1000 elements, it's ok to use .find
by Id for example?
javascript reactjs vue.js redux vuex
add a comment |
How do you usually update an element(hash) in a list in the store (redux, vuex) in O(1)?
I need the order of the elements, it's important (I can add/remove elements from the list). I will update elements on each millisecond, so a lot of updates will be made.
My question is, it's very bad to save the index of the element as a property of the element? Or if the list has 500-1000 elements, it's ok to use .find
by Id for example?
javascript reactjs vue.js redux vuex
How do you usually update an element(hash) in a list in the store (redux, vuex) in O(1)?
I need the order of the elements, it's important (I can add/remove elements from the list). I will update elements on each millisecond, so a lot of updates will be made.
My question is, it's very bad to save the index of the element as a property of the element? Or if the list has 500-1000 elements, it's ok to use .find
by Id for example?
javascript reactjs vue.js redux vuex
javascript reactjs vue.js redux vuex
asked Nov 26 '18 at 10:30
Luis SerranoLuis Serrano
971410
971410
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Normalize your store shape with two properties
- Map of id to entity
List of ids in the required order.
{
byId : {
"post1" : {
id : "post1",
author : "user1",
body : "......",
comments : ["comment1", "comment2"]
},
"post2" : {
id : "post2",
author : "user2",
body : "......",
comments : ["comment3", "comment4", "comment5"]
}
},
allIds : ["post1", "post2"]
}
With this structure, you can update a particular entity in O(1) complexity, and also retrieve the entities in the order of insertion by iterating allIds
.
More information can be found here
1
Thanks, nice solution!
– Luis Serrano
Nov 26 '18 at 11:04
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53479174%2fhow-to-update-an-element-in-a-redux-vuex-store-in-o1%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Normalize your store shape with two properties
- Map of id to entity
List of ids in the required order.
{
byId : {
"post1" : {
id : "post1",
author : "user1",
body : "......",
comments : ["comment1", "comment2"]
},
"post2" : {
id : "post2",
author : "user2",
body : "......",
comments : ["comment3", "comment4", "comment5"]
}
},
allIds : ["post1", "post2"]
}
With this structure, you can update a particular entity in O(1) complexity, and also retrieve the entities in the order of insertion by iterating allIds
.
More information can be found here
1
Thanks, nice solution!
– Luis Serrano
Nov 26 '18 at 11:04
add a comment |
Normalize your store shape with two properties
- Map of id to entity
List of ids in the required order.
{
byId : {
"post1" : {
id : "post1",
author : "user1",
body : "......",
comments : ["comment1", "comment2"]
},
"post2" : {
id : "post2",
author : "user2",
body : "......",
comments : ["comment3", "comment4", "comment5"]
}
},
allIds : ["post1", "post2"]
}
With this structure, you can update a particular entity in O(1) complexity, and also retrieve the entities in the order of insertion by iterating allIds
.
More information can be found here
1
Thanks, nice solution!
– Luis Serrano
Nov 26 '18 at 11:04
add a comment |
Normalize your store shape with two properties
- Map of id to entity
List of ids in the required order.
{
byId : {
"post1" : {
id : "post1",
author : "user1",
body : "......",
comments : ["comment1", "comment2"]
},
"post2" : {
id : "post2",
author : "user2",
body : "......",
comments : ["comment3", "comment4", "comment5"]
}
},
allIds : ["post1", "post2"]
}
With this structure, you can update a particular entity in O(1) complexity, and also retrieve the entities in the order of insertion by iterating allIds
.
More information can be found here
Normalize your store shape with two properties
- Map of id to entity
List of ids in the required order.
{
byId : {
"post1" : {
id : "post1",
author : "user1",
body : "......",
comments : ["comment1", "comment2"]
},
"post2" : {
id : "post2",
author : "user2",
body : "......",
comments : ["comment3", "comment4", "comment5"]
}
},
allIds : ["post1", "post2"]
}
With this structure, you can update a particular entity in O(1) complexity, and also retrieve the entities in the order of insertion by iterating allIds
.
More information can be found here
answered Nov 26 '18 at 10:47
EaswarEaswar
98910
98910
1
Thanks, nice solution!
– Luis Serrano
Nov 26 '18 at 11:04
add a comment |
1
Thanks, nice solution!
– Luis Serrano
Nov 26 '18 at 11:04
1
1
Thanks, nice solution!
– Luis Serrano
Nov 26 '18 at 11:04
Thanks, nice solution!
– Luis Serrano
Nov 26 '18 at 11:04
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53479174%2fhow-to-update-an-element-in-a-redux-vuex-store-in-o1%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown