2

アンダースコア関数を使用したいのですが_.where、オブジェクトの配列で機能させることができないようです。私は次のjsonを持っています:

var Planets = [
        {name:"maths", percComp: "2", preReq: "english"},
        {name:"english", percComp: "20", preReq: "geog"},
        {name:"german", percComp: "20", preReq: "english"},
        {name:"history", percComp: "20", preReq: "german"},
        {name:"irish", percComp: "20", preReq: "geog"},
        {name:"geog", percComp: "20", preReq: ""},        
        {name:"french", percComp: "20", preReq: "spanish"},
        {name:"spanish", percComp: "57", preReq: "french"}          
    ];

そして、次のコードを使用してそれぞれを配列に追加しています。

$(jQuery.parseJSON(JSON.stringify(Planets))).each(function(){
        var planet = new Class.Planet(this, paper);
        universe.push(planet);            
    });

次のように、アンダースコアを使用してリストからアイテムを取得しようとしています:

var planets = _.where(universe, {name: "maths"});

しかし、次のスクリプト エラーが発生します。

Uncaught TypeError: Object function (a){return new j(a)} has no method 'where' 

編集 次のようなものを使用することもできます

var planets = _.filter(Planets, function(p){ return p.name === "maths"});
4

3 に答える 3

4

_.where1.4.0でのみ利用可能http://underscorejs.org/#where

あなたはバロンの提案を使用する必要があります_.find

または、JShttps ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/filterを使用することもできます

例: http: //jsfiddle.net/4mxjb/2/

// returns an array with objects where their name 
// property is equal to 'maths'
Planets.filter(function(obj){
    return obj.name === 'maths'
}); 
于 2012-11-19T19:21:10.160 に答える
3

underscorejsで地球を手に入れよう

var planet = _.find(Planets, function(p) {return p.name == 'maths'});
于 2012-11-19T19:19:44.903 に答える