David O'Brien
David O'Brien

Reputation: 893

Test if value of key in array exists

I have the following object:

[ { id:
     '/subscriptions/resourcegroups/coco-test/providers/microsoft.devtestlab/schedules/shutdown-computevm-runscripts2',
    name: 'shutdown-computevm-runscripts2' },
  { id:
     '/subscriptions/resourcegroups/coco-test/providers/microsoft.devtestlab/schedules/shutdown-computevm-packer',
    name: 'shutdown-computevm-packer' } ]

I am trying to write a script that does something if it can't find a specific value in the name key of any of this object.

Example: shutdown-computevm-test

If there is no name anywhere in this object that matches this value, then I want my code to do something.
I'm new to nodejs, I tried things like includes(), indexOf etc, but these are either not the correct ways to do it or I never got the syntax right.
Any hints are appreciated.

Upvotes: 0

Views: 70

Answers (2)

tam.dangc
tam.dangc

Reputation: 2032

Use Array.prototype.find()

const arr = [ { id:
     '/subscriptions/resourcegroups/coco-test/providers/microsoft.devtestlab/schedules/shutdown-computevm-runscripts2',
    name: 'shutdown-computevm-runscripts2' },
  { id:
     '/subscriptions/resourcegroups/coco-test/providers/microsoft.devtestlab/schedules/shutdown-computevm-packer',
    name: 'shutdown-computevm-packer' } ]


let rs = arr.find(item => item.name === 'shutdown-computevm')
let rs2 = arr.find(item => item.name === 'shutdown-computevm-runscripts2')
console.log(rs) // undefined
console.log(rs2) // obj

Upvotes: 1

Jason Brumwell
Jason Brumwell

Reputation: 3550

Something like this should work for you;

const result = [ { id:
     '/subscriptions/resourcegroups/coco-test/providers/microsoft.devtestlab/schedules/shutdown-computevm-runscripts2',
    name: 'shutdown-computevm-runscripts2' },
  { id:
     '/subscriptions/resourcegroups/coco-test/providers/microsoft.devtestlab/schedules/shutdown-computevm-packer',
    name: 'shutdown-computevm-packer' } ];

const found = result.some((part) => part.name === 'shutdown-computevm-test');

if (! found) {
  // do something here
}

I prefer it to filter as it won't wait to iterate over all items in the array and will shortcut as soon as it is found.

Upvotes: 1

Related Questions