'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
forEachmethod - 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
findmethodalso 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 |
