'Print object that matches value in an array

I have an the following array of items:

[
{
  url: "www.google.com",
  name: "name1"
},
{
  url: "www.google.com2",
  name: "name1"
},
{
  url: "www.google.com3",
  name: "name1"
}
]

and a variable:

let url = "www.google.com2"

How would I check if the variable exists in the array, and if it exists, how would I print the specific object that marches the variable?

I am able to check if the variable exists in the array, but how would I print the specific object that has the same url as the variable?



Solution 1:[1]

  • you can loop though an array via forEach method
  • and add if condition to check if url is matching and inside condition console log entire(found) object

const input = [
{
url: "www.google.com",
name: "name1"
},
{
url: "www.google.com2",
name: "name1"
},
{
url: "www.google.com3",
name: "name1"
}
]


let url = "www.google.com2"

input.forEach(object => {
  if(object.url === url) {
  console.log(object)
  }
})
  • or if would like to find only one element in the array

  • you can use find method

  • also you can store found element in the variable

const input = [
{
url: "www.google.com",
name: "name1"
},
{
url: "www.google.com2",
name: "name1"
},
{
url: "www.google.com3",
name: "name1"
}
]


let url = "www.google.com2"

const foundObject = input.find(object => object.url === url)

console.log('foundObject', foundObject)

Solution 2:[2]

You can use JS filter()function for that. Filter fives you all matches. If you sure that your input array contains only once this url then you can use: r[0] ?? null; Then you will get only the object.

const input = [
  {
  url: "www.google.com",
  name: "name1"
  },
  {
  url: "www.google.com2",
  name: "name1"
  },
  {
  url: "www.google.com3",
  name: "name1"
  }
]
const url = 'www.google.com2';
const r = input.filter(e => e.url === url);

console.log('result: ',r);
console.log('resultOne: ',r[0] ?? 'nothing found');

Solution 3:[3]

If you want to print all the objects that contain the desired url you should go with @shutsman's answer.

If you are sure that there is only one object contained with the property (incase of an id or something) you could use:

const input = [
{
url: "www.google.com",
name: "name1"
},
{
url: "www.google.com2",
name: "name1"
},
{
url: "www.google.com3",
name: "name1"
}
]


let url = "www.google.com2"

console.log(input.find(obj => obj.url === url))

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 shutsman
Solution 2
Solution 3 PRSHL