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

a) 您没有初始化 的值result

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 回答