0

このJavascriptコードは、[f、dog]の代わりに[object、Object]として出力します。このJavaScriptコードは、[f、dog]の代わりに[object、Object]として出力します。

<html> 
    <body> 
     <button onclick="myFunction()">Try it</button> 
     <p id="demo"></p> 
     <script> 
     var animals = [{name:'f', species :'dog'},{name:'f1', species :'dog1'}]; 
     function isSog(animal) { 

      if(animal.species==='dog') return animal; 
     } 
     function myFunction() { 
      document.getElementById("demo").innerHTML = animals.filter(isSog); 
     } 
     </script> 
     </body> 
    </html> 
+3

可能な重複ができます[Javascriptを - ?\ [オブジェクトオブジェクト\]手段](http://stackoverflow.com/questions/8892465/javascript-object-object-means) – FrankerZ

+0

あなたはtypo isSogを持っています、おそらくあなたはisDogを意味しました! –

答えて

0

あなたがinnerHTMLプロパティに割り当てる前に、文字列に(filterメソッドの後)を取得配列を変換する必要があります。下の例のように私はJSON.stringifyと呼んでいます。

document.getElementById("demo").innerHTML = JSON.stringify(animals.filter(isSog)); 

するか、あなたが望む任意の他の形式を選択することができます。

あなたが行うことができます。返された配列に対してさらに処理を行う必要があります。なあなたのような単純なケースでは

、次のことが可能です。

var animals = [{ 
 
    name: 'f', 
 
    species: 'dog' 
 
}, { 
 
    name: 'f1', 
 
    species: 'dog1' 
 
}]; 
 

 
function isSog(animal) { 
 

 
    if (animal.species === 'dog') return animal; 
 
} 
 

 
var retObj = animals.filter(isSog); 
 
document.getElementById("demo").innerHTML = "[" + retObj[0].name + "," + retObj[0].species + "]";
<p id="demo"></p>

注意をご返される配列が大きい場合、ループして文字列を作成することは右のオプションになること。

0

これは、オブジェクトを文字列として出力しようとするために発生します。そしてそれはユーザ定義のtoString()メソッドを持っておらず、[object Object]を与えるデフォルトのものに戻っています。次の例のように、それは動物の名前を返すことができ、有益な何かをするためには、次のようにそのメソッドを追加することができます。

 var animals = [{name:'f', species :'dog', toString: function() { 
 
     return this.name} 
 
    }, {name:'f1', species :'dog1', toString: function() { 
 
     return this.name} 
 
    }]; 
 
    
 
    function isSog(animal) { 
 
     if(animal.species==='dog') return animal; 
 
    } 
 
    console.log('' + animals.filter(isSog)); // forcing string conversion as you do in your code

0

新しい配列を返します.filter。このような参照型は出力できません。 DOMから出力する内容を指定する必要があります。あなたの場合:

var newArr = animals.filter(isSog); 
var str = ''; 
if(newArr.length > 0){ 
    for(var i = 0; i < newArr.length; i++){ 
     str += "[" + newArr.name + ", " + newArr.species + "] <br>" 
    } 
} 
document.getElementById("demo").innerHTML = str; 
0

これは、filterメソッドから返されている配列がオブジェクトであるために発生します。そのオブジェクトをHTMLに表示すると、文字列に変換されます。 animals.toString()メソッドを実行すると、私の意味がわかります。したがって、意図した結果を表示したい場合は、自分の望むように文字列を構築するか、JSON.stringifyを使用して配列をStringに変換することができます。

0
function isSog(animal) { 

      if(animal.species==='dog') return animal; 
     } 
function myFunction() { 
    document.getElementById("demo").innerHTML = animals.filter(isSog); 
     } 

isSog関数はオブジェクト動物を返します。それが結果[オブジェクト、オブジェクト]を得る理由です。

function myFunction() { 
    document.getElementById("demo").innerHTML = JSON.stringify(animals.filter(isSog)); 
     } 

希望これはの

関連する問題