有人知道会创建关联数组的Javascript.csv文件读取器吗?

有人知道会创建关联数组的Javascript.csv文件读取器吗?,javascript,csv,d3.js,associative-array,Javascript,Csv,D3.js,Associative Array,如果有一个.csv文件读取器,它可以将一个“键”作为读取器的输入,从而创建一个关联数组,那就太好了 我正在读一个.csv文件,它看起来像这样(简化): 我想使用.csv文件读取器来执行以下操作: csv_to_associatve_array("file.csv", function(foo,'ID') { // Where ID is foo's "key" using the ID column of the csv file // Then access foo as

如果有一个.csv文件读取器,它可以将一个“键”作为读取器的输入,从而创建一个关联数组,那就太好了

我正在读一个.csv文件,它看起来像这样(简化):

我想使用.csv文件读取器来执行以下操作:

csv_to_associatve_array("file.csv", function(foo,'ID') {

    // Where ID is foo's "key" using the ID column of the csv file 

    // Then access foo as an associative array something like this:

    console.log(foo['ND'].State)
});
这应该将“北达科他州”记录到控制台

我找了不少,似乎什么也没找到。也许我用错关键词了

在任何情况下,如果您有一种使用密钥访问csv数据的简洁方法,那将是一种很好的方式。否则,如果没有其他选择,您是否知道如何从noob可以理解并作为数组[ID]访问的“普通”js数组创建关联数组

您可以使用它创建一个映射,即键值映射,它本质上就是您要寻找的。与使用ES6引入的JavaScript内置类型相比,使用
d3.map
的好处在于,您可以提供一个键函数,用于提取键的值(
ID
)。地图的创建变得非常简单

const states = d3.map(data, d => d.ID);
然后,您可以使用访问单个值,即状态

请看下面演示用法的代码段:

//用于加载本地csv数据的设置。与答案无关。
const csv=URL.createObjectURL(新Blob([
`州、身份证、人口
阿拉巴马州,阿拉巴马州,1234年
加利福尼亚州,加利福尼亚州,5678
夏威夷,你好,90123
北达科他州,邮编:45678`
]));
//设置结束。
d3.csv(csv)
。然后(数据=>{
const states=d3.map(data,d=>d.ID);//将解析的CSV数据转换为映射。
console.log(states.get(“ND”).State);/>北达科他州
});

可能与您的意思是
对象
重复,对吗?虽然请求第三方库是离题的,但我要说一个词
papaparse
JS没有关联数组。对象或多或少不适合此用途,因为没有保持顺序。@Teemu-Hmmm…我以为访问数组['ID']是关联属性?与数组[integer]相反。属性。。。它在JS中被称为object,尽管点符号通常用于访问对象属性。将文件逐行存储到对象中的问题是,对象属性的顺序没有定义,读取时这些行可能会混乱。可能您应该只使用数组。正如我们通常对键/值对使用
d3.map()
一样,通常会忘记您可以传递一个对象数组作为值。那太好了。
const states = d3.map(data, d => d.ID);