簡體   English   中英

javascript.forEach 帶有嵌套代碼的循環

[英]javascript .forEach loop with nested code

我有這個代碼:

function uploadFiles(event) {
    event.preventDefault();

    files = [...fileElem.files]

    files.forEach(uploadFile)

}

function uploadFile(file, i) {

}

現在,我想向files.forEach(uploadFile)添加代碼

偽代碼:files.forEach(
上傳文件(); 控制台.log(文件名); )

我在這里查看: For-each over a array in JavaScript所以我嘗試了:

files.forEach(function(uploadFile) {
    uploadFile();
    console.log(file.name); 
})

files.forEach(function (entry) {            
    console.log(entry.name);
    uploadFile(entry);
})

但我想我不明白這是如何工作的。 如何執行 function uploadFile並訪問同一代碼塊中file的屬性?

使用此代碼:

function uploadFiles(event) 
{
    event.preventDefault();

    files = [...fileElem.files]

    files.forEach(extendedUploadFile)
    clearFileInput(fileElem);
}

function uploadFile(file, i) 
{
 ....
}

function extendedUploadFile(file, i)
{
    console.log(file.name);
    uploadFile(file, i);
}

// reset/clear FILE type inputs
function clearFileInput(ctrl)
{
  try
  {
    ctrl.value = null;
  }
  catch(ex)
  { }
  if (ctrl.value) ctrl.parentNode.replaceChild(ctrl.cloneNode(true), ctrl);
}

我想你想做這樣的事情:

files.forEach( file => {
       uploadFile(file);
 });

不確定i對上傳文件的意思,猜測它是一個迭代器:

for(var x = 0; x < files.length){
uploadFile(file[x],x);
}

正如 Andreas 所指出的, Mozilla 的 forEach 文檔足以理解它的工作原理。

function logArrayElements(element, index, array) {
   console.log('a[' + index + '] = ' + element)
}

[2, 5, 9].forEach(logArrayElements)

當您遍歷一個數組時,對於每個元素,您將獲得元素、索引和被遍歷的數組 object。 在您的情況下,您不需要為每個元素遍歷數組 object 。 所以你可以忽略它並做這樣的事情:

function uploadFiles(event) {
    event.preventDefault();
    files = [...fileElem.files]
    files.forEach(uploadFile)
}

function uploadFile(file, index) {
    console.log(file.name) (Reach the properties of the file)
    ... (Do the uploading)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM