1

I have this array of objects:

myArray=[
{name: 'joe', value: 'joe rogan'},
{name: 'sarah', value: 'sarah rogan'},
{name: 'jack', value: 'jack rogan'},
{name: 'steph', value: 'steph rogan'}
]

I wanna see if myArray's names include 'sarah' then return its value which is 'sarah rogan'. I have tried:

const myName = myArray.map(o => o.name === 'sarah' ? o.value : "")

But it returns an array with two values. How can I just get 'sarah''s value which is 'sarah rogan' as a string?

seyet
  • 1,080
  • 4
  • 23
  • 42

4 Answers4

3

You can use Array#find.

const myArray=[
  {name: 'joe', value: 'joe rogan'},
  {name: 'sarah', value: 'sarah rogan'},
  {name: 'jack', value: 'jack rogan'},
  {name: 'steph', value: 'steph rogan'}
];
let obj = myArray.find(({name})=>name==='sarah');
if(obj) console.log(obj.value);
Unmitigated
  • 76,500
  • 11
  • 62
  • 80
2
const myName = myArray.find(x => x.name === 'sarah').value
vritser
  • 46
  • 2
1

You can use filter as well. This will return all matches as an Array unlike find which returns the first match.

myArray=[
{name: 'joe', value: 'joe rogan'},
{name: 'sarah', value: 'sarah rogan'},
{name: 'jack', value: 'jack rogan'},
{name: 'steph', value: 'steph rogan'}
]

// filter the array and get the first item
const myName = myArray.filter(o => o.name === 'sarah')[0]

console.log(myName.value)
Liew Xun
  • 99
  • 5
1

With a for loop:

myArray=[
{name: 'joe', value: 'joe rogan'},
{name: 'sarah', value: 'sarah rogan'},
{name: 'jack', value: 'jack rogan'},
{name: 'steph', value: 'steph rogan'}
]

for(let i = 0; i < myArray.length; i++){
    if(myArray[i].name === 'sarah'){
        console.log(myArray[i]);
    }
}
sonEtLumiere
  • 4,461
  • 3
  • 8
  • 35