Foreach循环的长度比长度长吗?

时间:2018-04-26 09:53:22

标签: javascript arrays

我有片刻。

                var files = document.getElementById("filePostInput").files;
            LogData("files length " + files.length); // 1
            var formData = new FormData();

            for (var file in files)
            {
                formData.append("file",files[file].data,files[file].name);
                LogData("file name" + files[file].name);
            }

输出:

  

周一,2018年4月26日09:39:47 GMT:档案名称

     

周一,2018年4月26日09:39:47 GMT:文件名未定义

     

周一,2018年4月26日09:39:47 GMT:file nameTest.txt

     

周一,2018年4月26日09:39:47 GMT:文件长度为1

当我调用files.length时,我得到1.然而,我的foreach循环记录了3个文件名' s。第一个是我放入文件输入的文件的名称,接下来的两个我不知道它们是什么。

有人可以向我解释这里发生了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

使用for (var file of files)代替for (var file in files)for .. in循环遍历files的所有属性; for .. of循环遍历集合中的项目。这样您就不需要[]表示法:

for (var file of files)
{
    formData.append("file", file.data , file.name);
    LogData("file name" + file.name);
}