将papaparse的结果移动到数组中

问题描述 投票:1回答:2

我正在使用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)

如何将解析结果推送到本地数组中,以便在其他函数/进程中使用它?

console.log(display_links)

返回一个空数组。

javascript papaparse
2个回答
2
投票

在您的完整功能中,您可以使用重新分配替换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);

1
投票

面对与Papaparse类似的问题,或者是我目前对图书馆和回调的了解。虽然我可以指出你可以为自己找到答案的方向。

首先,你的display_links出现了一个空数组,因为当通过Papaparse解析文件时,complete是一个异步回调函数,这意味着在你选择的文件被完全处理后,你在回调中分配display_links是异步发生的。因此,当您记录变量时,尚未分配结果。简而言之,这是行不通的。

现在要解决你的问题,我发现的唯一答案就是无论你对display_links有什么计划,你都可以把它们放在一个函数中,从complete里面,用display_links作为参数调用该函数。这样,您的函数将使用解析的结果执行。

查看异步JS以及回调如何为您自己寻找更优化的解决方案,如果这对您不起作用的话。

旁注 - 我的问题是,我想在函数内部抽象解析和其他相关操作,一旦文件被读取/解析,该函数将返回最终结果。重新调整最终结果的最后一部分是我无法完成的事情,因为我认为你只能前进并从complete回调调用另一个函数并且返回不起作用:/

参考 -

© www.soinside.com 2019 - 2024. All rights reserved.