2

I have an array of cars like this:

[{ name:"Toyota Minivan", id:"506" }, { name:"Honda Civic", id:"619" }]

I am trying to check whether the array contains a certain id.

I have tried

var x =!!_.where(cars, {id:'506'}).length;

expecting it to return true if the array contains the id, but it always returns false.

What am I doing here ?

Btw, I don't have to use underscore.js if there is a better way of doing this.

thanks Thomas

0

4 Answers 4

13

Your code does work (once you fix the syntax errors in the object array): http://jsfiddle.net/ArPCa/

var cars = [{ name:"Toyota Minivan", id:"506"}, { name:"Honda Civic", id:"619"}];
var x =!!_.where(cars, {id:'506'}).length;
console.log('value: ' + x);

returns "value: true". So there must be a problem somewhere else.

But, a better way to do this might be some:

var y = _.some(cars, function(c) {
    return c.id == '506'; 
});
Sign up to request clarification or add additional context in comments.

1 Comment

you were right. The problem was, that I passed the id as a string and I should have passed an int. Thanks!
5

I know this is late, but even easier:

var cars = [{ name:"Toyota Minivan", id:"506"}, { name:"Honda Civic", id:"619"}];

function findById(id) {
  return _.contains(_.pluck(cars, 'id'), id);
}

1 Comment

Runtime here is weird. Pluck wraps map, so you essentially make a selective copy of the array content, then iterate over that new copy to find your match. Kind of twice the work.
4

Say you have the array arr, and your id, id.

arr.filter(function(elem) { return elem.id == id; });

will return an array with the matching element(s);

You could wrap it in a function like:

function findById(arr, id) {
 var filtered = arr.filter(function(elem) { return elem.id == id; });
 return filtered && filtered.length ? filtered[0] : null;
}

, potentially doing some other stuff if you weren't happy with the default filtered array.

Comments

0
var obj = [{
    name: "Toyota Minivan",
    id: "506"
}, {
    name: "Honda Civic",
    id: "619"
}];

function findCar(id) {
    return obj.filter(function (car) {
        if (car.id == id) {
            return car;
        }
    });
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.