How to check object has existed or not in Array - Basic Javascript

Viewed 104

I have a basic problem with Javascript. This code is below.

var users = [{"user":{"id":1,"username":"google"}},{"user":{"id":2,"username":"yahoo"}}]

const result = users.filter(users.id === 1);

console.log(result);

I want to get result if user_id exist in array or not.

The error is:

false is not a function
6 Answers

You need to pass a callback to the function. This will return you the items which id is 1.

const users = [{"user":{"id":1,"username":"google"}},{"user":{"id":2,"username":"yahoo"}}]

const result = users.filter(user => user.user.id === 1);

console.log(result);

Also instead of checking the length, you can use some function. This will terminate check of the rest items if any item was found.

const users = [{"user":{"id":1,"username":"google"}},{"user":{"id":2,"username":"yahoo"}}]

const result = users.some(user => user.user.id === 1);

console.log(result);

You need to take a callback, like an arrow function, with the right properties to the id, because you have a nested structure for every user.

var users = [{ user: { id: 1, username: "google" } }, { user: { id:2, username: "yahoo" } }];

const result = users.filter(user => user.user.id === 1);

console.log(result);

You are writing the function in a wrong way

Try like this

const result = users.filter(x => x.user.id === 1);
console.log(result);

DEMO

Try like this

var users = [{"user":{"id":1,"username":"google"}},{"user":{"id":2,"username":"yahoo"}}]

const result = users[0].user.id;

console.log(result);

You might want to use reduce instead:

var users = [{"user":{"id":1,"username":"google"}},{"user":{"id":2,"username":"yahoo"}}]

const result = users.reduce((s, user) => s || user.user.id === 1, false);

console.log(result);

.filter returns an array, while .reduce can return whatever you want (in this case, a boolean).

If you want to use .filter, try:

var users = [{"user":{"id":1,"username":"google"}},{"user":{"id":2,"username":"yahoo"}}]

const result = !!users.filter(user => user.user.id === 1).length;

console.log(result);

However, keep in mind that .filter will create an extra array and might not be as efficient as .reduce.

var users = [{"user":{"id":1,"username":"google"}},{"user":
{"id":2,"username":"yahoo"}}]

const result = users.filter(function(el){
return (el.user.id===1)
});

console.log(result[0].user.username);
//This will print the username of the object with id==1 in array
Related