Reputation: 51
I have a method that checks a con
variable as true
or false
and return a device tag for each device, I could only get the first tag even though the 2nd, 3rd condition is true. How to check all the conditions and return all the devices.
function populateDevices(){
if(ethsrc[0].con === true) {
return ethsrc
.filter(i => i.srcid === 0)
.map((i,idx) => (
<Device name={i.name} srcid={i.srcid} inst={idx} drt={i.drt} data={i.data} />
))
}
if(ebmcard[0].con === true){
return ebmcard
.filter(i => i.srcid === 0)
.map((i,idx) => (
<Device name={i.name} srcid={i.srcid} inst={idx} drt={i.drt} data={i.data} />
))
}
if(mi5module[0].con === true){
return mi5module
.filter(i => i.srcid === 0)
.map((i,idx) => (
<Device name={i.name} srcid={i.srcid} inst={idx} drt={i.drt} data={i.data} />
))
}
}
Upvotes: 2
Views: 163
Reputation: 46311
As soon as you make a return
, the function stops, everything after won't get executed. You could use a result
array, concatenate with each array for each condition, like so:
function populateDevices(){
let result = []
if(ethsrc[0].con === true) {
result = result.concat(ehsrc
.filter(i => i.srcid === 0)
.map((i,idx) => (
<Device name={i.name} srcid={i.srcid} inst={idx} drt={i.drt} data={i.data} />
)))
}
if(ebmcard[0].con === true){
result = result.concat( ebmcard
.filter(i => i.srcid === 0)
.map((i,idx) => (
<Device name={i.name} srcid={i.srcid} inst={idx} drt={i.drt} data={i.data} />
)))
}
if(mi5module[0].con === true){
result = result.concat(mi5module
.filter(i => i.srcid === 0)
.map((i,idx) => (
<Device name={i.name} srcid={i.srcid} inst={idx} drt={i.drt} data={i.data} />
)))
}
return result;
}
Upvotes: 2