Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用下划线检查javascript数组是否包含值_Javascript_Arrays_Underscore.js - Fatal编程技术网

使用下划线检查javascript数组是否包含值

使用下划线检查javascript数组是否包含值,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我有一系列这样的车: [{ name:"Toyota Minivan", id:"506" }, { name:"Honda Civic", id:"619" }] 我正在尝试检查数组是否包含某个id 我试过了 var x =!!_.where(cars, {id:'506'}).length; 如果数组包含id,则希望它返回true,但它始终返回false 我在这里干什么 顺便说一句,如果有更好的方法,我不必使用下划线.js 谢谢 Thomas说你有数组arr,还有你的id,id arr.

我有一系列这样的车:

[{ name:"Toyota Minivan", id:"506" }, { name:"Honda Civic", id:"619" }]
我正在尝试检查数组是否包含某个id

我试过了

var x =!!_.where(cars, {id:'506'}).length;
如果数组包含id,则希望它返回true,但它始终返回false

我在这里干什么

顺便说一句,如果有更好的方法,我不必使用下划线.js

谢谢
Thomas

说你有数组
arr
,还有你的id,
id

arr.filter(function(elem) { return elem.id == id; });
将返回具有匹配元素的数组

您可以将其包装为如下函数:

function findById(arr, id) {
 var filtered = arr.filter(function(elem) { return elem.id == id; });
 return filtered && filtered.length ? filtered[0] : null;
}
,如果您对默认筛选数组不满意,则可能会执行其他操作

代码确实有效(一旦修复了对象数组中的语法错误):

返回“value:true”。所以在别的地方肯定有问题

但是,更好的方法可能是
some

var y = _.some(cars, function(c) {
    return c.id == '506'; 
});

我知道这很晚了,但更容易:

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

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

你是对的。问题是,我把id作为字符串传递,我应该传递一个int。谢谢!这里的运行时很奇怪。Pullk包装映射,这样您基本上可以创建数组内容的选择性副本,然后迭代该新副本以找到匹配项。差不多是工作的两倍。
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;
        }
    });
}
var cars = [{ name:"Toyota Minivan", id:"506"}, { name:"Honda Civic", id:"619"}];

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