Похоже на ES6
. Это просто clean syntax
.
const toggleState = (sindecs, id) => {
sindecs.forEach((sinde) => {
const link = sinde.link.find((s) => s.LinkID === id);
if (link) link.Active = !link.Active;
});
};
toggleState(sindecs, selectedItem.LinkID)
То же, что и выше, но good in performance
. Если есть только one match
, это не будет iterate
всех данных. Это будет break loop
.
const toggleState = (sindecs, id) => {
let link;
sindecs.some((sinde) => {
link = sinde.link.find((s) => s.LinkID === id);
return Boolean(link);
});
if (link) link.Active = !link.Active;
};
toggleState(sindecs, selectedItem.LinkID);
Демо:
const toggleState = (sindecs, id) => {
let link;
sindecs.some((sinde) => {
link = sinde.link.find((s) => s.LinkID === id);
return Boolean(link);
});
if (link) link.Active = !link.Active;
};
let selectedItem = { LinkID: 1 };
let sindecs = [{"estado":{"id":2,"siga":"AL","nome":"Alagoas"},"uf":{"id":2,"nome":"SP"},"link":[{"LinkID":1,"Link":"link1","Active":false},{"LinkID":2,"Link":"link 2","Active":false}],"SindecID":3},{"estado":{"id":19,"siga":"RJ","nome":"Rio de Janeiro"},"uf":{"id":1,"nome":"RJ"},"link":[{"LinkID":3,"Link":"rio","Active":false}],"SindecID":4}];
toggleState(sindecs, selectedItem.LinkID);
console.log(JSON.stringify(sindecs, null, 2)) // update..