1

私はJavascriptでOOPを学んでいるだけなので、これをどのように尋ねるかは正確にはわかりませんが、ここでは次のようになります。

同じ変数を持つすべてのオブジェクトを呼び出すことができるように(最終的には並べ替えることができるように)しようとしています。以下に例を示します。

function animal(name, numLegs, option2, option3){
    this.name = name;
    this.numLegs = numLegs;
    this.option2 = option2;
    this.option3 = option3;
}

var human = new animal(Human, 2, example1, example2);
var horse = new animal(Horse, 4, example1, example2);
var dog = new animal(Dog, 4, example1, example2);

この例を使用して、console.log()を実行し、4本の脚を持つすべての動物の名前を表示できるようにしたいと思います。(もちろん、馬と犬のみを表示する必要があります...)

最終的には、この情報を使用してドロップダウンリストまたはフィルター処理された検索リストを作成できるようにしたいと考えています。私はphpとmySQLでこれを行いますが、javascriptでOOPを学習するためにこれを行っています。

何を聞いたらいいのかよくわからないので、ここでしか聞いていません。ありがとうございました!

4

3 に答える 3

3

次のようなジェネリック関数を書くことができます:

function findSamePropVal(arry, prop, val)​{
    var output = [], i, len = arry.length, item;

    for (i = 0; i < len; i++){
        item = arry[i];

        if (prop in item && item[prop] == val)
            output.push(item);
    }
    return output;
}

あなたはそれを次のように使うでしょう:

var animals = [];
animals.push(new Animal('Human', 2, 'example1', 'example2'));
animals.push(new Animal('Horse', 4, 'example1', 'example2'));
animals.push(new Animal('Dog', 4, 'example1', 'example2'));​​​​​​
var fourLegged = findSamePropVal(animals, "numLegs", 4);   

これが実際の動作を示すフィドルです:http://jsfiddle.net/cEXju/

findSamePropValArray.filterを使用して作成することもできます(@Alnitakの提案に従って):

function findSamePropVal(arry, prop, val){    
    return arry.filter(function(ele){
        return prop in ele && ele[prop] === val;
    });
}

You can see the altered version of findSamePropVal working here: http://jsfiddle.net/cEXju/1/

于 2012-09-20T21:48:21.657 に答える
1

すべてのを配列に保存する必要があります。animal作成されたすべてのを取得する方法はありません(少なくとも、あるとは思いません)animal

次に、配列をループして、必要な値を確認します。

于 2012-09-20T21:40:07.067 に答える
1

さて、あなたがそれらをどこかに置かない限り、あなたが今作ったすべてのそれらの「動物」オブジェクトについて知る本当の方法はありません。必要なことを実現するための最良の方法は、それらをすべて配列に格納し、4本の脚を持つものだけを取得する場合はその配列を反復処理することです。

例えば:

for (var i = 0; i < animals.length; ++i) {
    if (animals[i].numLegs === 4) console.log(animals[i]);
}
于 2012-09-20T21:41:06.237 に答える