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

Yon*_*eek 0 javascript

我尝试遍历整个数组并找出它们的真实性.现在,当我运行该函数时,我得到了一些未定义的结果.:(为什么?

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
Run Code Online (Sandbox Code Playgroud)

Nik*_*iko 5

a)您没有初始化以下值result:

var result = 0;
Run Code Online (Sandbox Code Playgroud)

b)这不是你如何迭代数组的项目:

for (var i = 0; i < myArray.length; i++) {
    var item = myArray[i];
    if (item.done === true) { // <-- "item" here, not "myArray"!
        result++;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Crashthatch因为数组对象可以使用其他属性进行扩展.但是,对于当前的任务,它没有多大意义. (2认同)