将 papaparse 的结果移动到数组中
Move results of papaparse into array
我正在使用 papaparse 通过以下方式解析本地 csv 文件:
var display_links = [];
Papa.parse(file_links, {
header: true,
download: true,
dynamicTyping: true,
complete: function (results) {
results.data.push(display_links)
}
});
console.log(display_links)
如何将解析结果推送到本地数组,以便我可以在其他 functions/processes 中使用它?
console.log(display_links)
Returns 一个空数组。
在您的完整函数中,您可以将 results.data.push(display_links)
替换为重新分配:display_links = results.data;
。看来你搞反了。
如果您在该函数范围之外声明了 display_links,您稍后应该可以访问结果。所以简单的解决方案就是将它从本地范围中拉出来。
如果这不可行,请提供更完整的示例。
let display_links = [];
function doSomethingWithDisplayLinks(results) {
display_links = results;
}
console.log('display_links before:', display_links);
doSomethingWithDisplayLinks(['http://www.google.com']);
console.log('display_links after:', display_links);
面临与 Papaparse 类似的问题,或者这是我目前对库和回调的了解。尽管我可以为您指明方向,您或许可以自己找到答案。
首先,你的 display_links
出现一个空数组,因为当通过 Papaparse 解析文件时,complete
是一个异步回调函数,这意味着你在回调中分配 display_links
在您选择的文件被完全处理后异步发生。所以当你记录你的变量时,它还没有分配结果。简而言之,这是行不通的。
现在要解决您的问题,我找到的唯一答案是无论您对 display_links
有什么计划,您都可以将它们放在一个函数中,然后从 complete
内部调用该函数以 display_links
作为参数。这样,您的函数将使用解析结果执行。
查看 Asynchronous JS 以及回调的工作原理,如果这对您不起作用,则可以找到更适合自己的最佳解决方案。
旁注 - 我的问题是,我想抽象一个函数内的解析和其他相关操作,一旦文件被读取/解析,该函数将 return最终结果返回。返回最终结果的最后一部分是我无法完成的事情,因为我认为您只能继续前进并从 complete
回调中调用另一个函数,而 returning 不起作用:/
参考 -
- Papaparse Docs -> 搜索
complete
.
- 异步 JS - Mozilla Link
我正在使用 papaparse 通过以下方式解析本地 csv 文件:
var display_links = [];
Papa.parse(file_links, {
header: true,
download: true,
dynamicTyping: true,
complete: function (results) {
results.data.push(display_links)
}
});
console.log(display_links)
如何将解析结果推送到本地数组,以便我可以在其他 functions/processes 中使用它?
console.log(display_links)
Returns 一个空数组。
在您的完整函数中,您可以将 results.data.push(display_links)
替换为重新分配:display_links = results.data;
。看来你搞反了。
如果您在该函数范围之外声明了 display_links,您稍后应该可以访问结果。所以简单的解决方案就是将它从本地范围中拉出来。
如果这不可行,请提供更完整的示例。
let display_links = [];
function doSomethingWithDisplayLinks(results) {
display_links = results;
}
console.log('display_links before:', display_links);
doSomethingWithDisplayLinks(['http://www.google.com']);
console.log('display_links after:', display_links);
面临与 Papaparse 类似的问题,或者这是我目前对库和回调的了解。尽管我可以为您指明方向,您或许可以自己找到答案。
首先,你的 display_links
出现一个空数组,因为当通过 Papaparse 解析文件时,complete
是一个异步回调函数,这意味着你在回调中分配 display_links
在您选择的文件被完全处理后异步发生。所以当你记录你的变量时,它还没有分配结果。简而言之,这是行不通的。
现在要解决您的问题,我找到的唯一答案是无论您对 display_links
有什么计划,您都可以将它们放在一个函数中,然后从 complete
内部调用该函数以 display_links
作为参数。这样,您的函数将使用解析结果执行。
查看 Asynchronous JS 以及回调的工作原理,如果这对您不起作用,则可以找到更适合自己的最佳解决方案。
旁注 - 我的问题是,我想抽象一个函数内的解析和其他相关操作,一旦文件被读取/解析,该函数将 return最终结果返回。返回最终结果的最后一部分是我无法完成的事情,因为我认为您只能继续前进并从 complete
回调中调用另一个函数,而 returning 不起作用:/
参考 -
- Papaparse Docs -> 搜索
complete
. - 异步 JS - Mozilla Link