将 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 不起作用:/

参考 -