为什么我在JavaScript中的计算中未定义?

时间:2013-02-27 14:24:03

标签: javascript

我尝试遍历整个阵列并找出' true'他们是。现在,当我运行该函数时,我得到一些 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

3 个答案:

答案 0 :(得分: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++;
    }
}

答案 1 :(得分:4)

检查result变量是否已使用0进行初始化。迭代中还有另一个问题。您需要使用myArray[item]来获取对象属性的值:

if (myArray[item].done === true)

答案 2 :(得分:1)

尝试将变量初始化为实际值:var result = 0;

编辑:另外,根据VisioN的回答,您需要检查myArray[item].done