简体   繁体   中英

Compare objects within a array

I have an array

[{"name": "pay1","isEnabled": true},{"name": "pay2","isEnabled": false}]

I need to console the value where isEnabled is true.

I have tried with forEach method but is not working if both value are true.

Because forEach iterates over each object so it will get one value at a time.

Below is my code

 const arr = [{"name": "pay1","isEnabled": true},{"name": "pay2","isEnabled": true}] arr.forEach(item => { if ((item.name === 'pay1' && item.isEnabled) && (item.name === 'pay2' && item.isEnabled)) { console.log('both enabled') } else if (item.name === 'pay1' && item.isEnabled) { console.log('pay1 enabled') } else if(item.name === 'pay2' && item.isEnabled){ console.log('pay2 enabled') } })

How can i resolve this.

Thanks in advance........

one way is to filter all enabled country and display them

 const arr = [{"name": "pay1","isEnabled": true},{"name": "pay2","isEnabled": true},,{"name": "pay2","isEnabled": false}] const arrFilt = arr.filter(oneCountry => oneCountry.isEnabled); arrFilt.forEach(item => { console.log(`${item.name} enabled`) })

There is no need to run a loop.

Just find the elememnt with name having pay1 and name having pay1 . Check the isEnabled of each node. If its true for both name, both are enabled or only one enabled.

 const arr = [{ "name": "pay1", "isEnabled": true }, { "name": "pay2", "isEnabled": true }]; const item1 = arr.find(node => node.name === "pay1"); const item2 = arr.find(node => node.name === "pay2"); if (item1.isEnabled && item2.isEnabled) { console.log('both enabled') } else if (item1.isEnabled) { console.log('pay1 enabled') } else if (item2.isEnabled) { console.log('pay2 enabled') } else { console.log('none enabled') }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM