Reputation: 489
let initialData = [
{ id: 1, value: "EXPLORER", status:false, name:'explorer'},
{ id: 2, value: "YIDINJI-ADMIN", status:false, name:'yidinji' }]
let [data,setData] = useState(initialData)
The above give data is my initial state of array, Sometimes I have to update multiple items using a single map function
let newData = await data.map(item => {
(item.id === 1)? {...item, status : true} : item;
(item.id === 2)? {...item, status : true} : item;
})
setData(newData)
I have tried multiple ways to update the status of two data in a single map function, but nothing is working. Help will be appreciated!
Upvotes: 0
Views: 29
Reputation: 12787
You forgot return
in map
. Just add return
like this:
let newData = await data.map((item) => {
return item.id === 1 ? { ...item, status: true } : item;
});
setData(newData);
Update, if you want update multyiple items, you can do like this:
let newData = await data.map((item) => {
let result = item;
if (item.id === 1 || item.id === 2) {
result = { ...item, status: true };
}
return result;
});
setData(newData);
Upvotes: 2
Reputation: 281
This will help you. You forgot to return item.
let newData = data.map(item => {
if (item.id === 1 || item.id===2){
item.status=true
}
return item
})
Upvotes: 1