将forEach函数应用于类似对象的数组

时间:2019-05-02 08:23:08

标签: javascript reactjs

我想我有一个问题。我尝试为输入类型的文件实现onchangedhandler方法。

这是一段代码

const { target: { files } } = event
       const filesToStore = []
       files.forEach(file => {
          filesToStore.push(file)
       })
console.log(filesToStore)
  

但是我有一个问题。 TypeError:files.forEach不是函数

我试图整理文件,我发现它是一个类似于对象的数组,如何转换为数组并将其存储在filesToStore文件值(在我的情况下)?

console.log(文件)

FileList {0: File, length: 1}
0: File {name: "176B8706.jpg", lastModified: 1556695382251, lastModifiedDate: Wed May 01 2019 10:23:02 GMT+0300 (Москва, стандартное время), webkitRelativePath: "", size: 7924152, …}
length: 1
__proto__: FileList

2 个答案:

答案 0 :(得分:5)

您可以使用Array.from,它采用类似对象的数组并将该对象转换为数组。

filesToStore = Array.from(files);

答案 1 :(得分:1)

files的类型为File​List,并且没有扩展方法forEach。您可以在[]spread将其转换为文件数组:

[...files].forEach(file => { /* do something */ })

或者您的情况就足够了:

const filesToStore = [...files]