0

私は配列全体をループして、それらがどれほど「真」であるかを調べようとします。関数を実行すると、undefined-resultが表示されます。:( なぜ?

myArray = [
    {text: 'hola', done: false},
    {text: 'hola', done: true},
    {text: 'hola', done: true},
    {text: 'hola', done: false},
    {text: 'hola', done: true}
  ];

  var howMany = function(myArray){

     var result;
      for (var item in myArray){
          if(myArray.done === true)
            result++;
      }
      return result;
  };


var items =howMany(myArray);
    console.log(items) // I want to see if it's correct
4

3 に答える 3

5

resulta) :の値を初期化しませんでした

var result = 0;

b)これは、配列の項目を反復処理する方法ではありません。

for (var i = 0; i < myArray.length; i++) {
    var item = myArray[i];
    if (item.done === true) { // <-- "item" here, not "myArray"!
        result++;
    }
}
于 2013-02-27T14:27:29.047 に答える
4

result変数がで初期化されていることを確認してください0。そして、反復には別の問題があります。myArray[item]オブジェクトプロパティの値を取得するには、を使用する必要があります。

if (myArray[item].done === true)
于 2013-02-27T14:26:52.910 に答える
1

変数を実際の値に初期化してみてください。var result = 0;

編集:また、VisioNの回答に従って、チェックする必要がありますmyArray[item].done

于 2013-02-27T14:26:42.117 に答える