簡體   English   中英

檢查javascript數組是否包含使用underscorejs的值

[英]checking if javascript array contains value using underscorejs

我有一系列像這樣的汽車:

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

我試圖檢查數組是否包含某個id。

我努力了

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

如果數組包含id,則期望它返回true,但它總是返回false。

我在這是要干嘛 ?

順便說一句,如果有更好的方法,我不必使用underscore.js。

謝謝托馬斯

您的代碼確實有效(一旦修復了對象數組中的語法錯誤): 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);

返回“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);
}

假設你有陣列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;
}

如果你對默認的過濾數組不滿意,可能會做一些其他的事情。

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;
        }
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM