gpt4 book ai didi

javascript - 按位置而不是名称识别列

转载 作者:行者123 更新时间:2023-11-30 11:40:47 25 4
gpt4 key购买 nike

我的代码中有这个:

 _currentData = dta.map(function(d) {
return {
"Filter_1": d.Company,
"Filter_2": d.Continent,
"Dt": parseDate(d.Dt),
"amount": +d.NumUsers
};
})

所以 dta 是一个包含 4 列的数据表 - 它们的标题是 Company/Continent/Dt/NumUsers

是否可以通过位置而不是标题来识别列。我尝试了以下但均无效:

 _currentData = dta.map(function(d) {
return {
"Filter_1": d[0],
"Filter_2": d.Continent,
"Dt": parseDate(d.Dt),
"amount": +d.NumUsers
};
})

_currentData = dta.map(function(d) {
return {
"Filter_1": d.columns(0),
"Filter_2": d.Continent,
"Dt": parseDate(d.Dt),
"amount": +d.NumUsers
};
})

最佳答案

标准答案是。因为在您的 map 函数中,d 是一个对象,像这样...

{Company: "foo", Continent: "bar", Dt: "baz", NumUsers: "foobar"}

...并且不是数组,无法区分谁是第一个谁是最后一个:您无法保证对象中属性的顺序。

但是,使用 D3 v4,有一种方法可以通过列的位置来识别列...如果您使用的是 d3.csvd3 .tsv 加载数据:

这两个函数都创建了一个名为 columns数组属性,数据的第一行(标题)作为一个数组。所以,你只需要:

var columns = data.columns;

对于您的数据,这将是:

["Company", "Continent", "Dt", "NumUsers"]

之后,在您的 map 函数中使用该 columns 数组:

var _currentData = data.map(d => {
return {
"Filter_1": d[columns[0]],
"Filter_2": d[columns[1]],
"Dt": d[columns[2]],
"amount": d[columns[3]]
};
});

这是一个演示:

var data = d3.csvParse(d3.select("#csv").text());

var columns = data.columns;

var _currentData = data.map(d => {
return {
"Filter_1": d[columns[0]],
"Filter_2": d[columns[1]],
"Dt": d[columns[2]],
"amount": d[columns[3]]
};
});

console.log(_currentData);
pre{
display: none;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<pre id="csv">Company,Continent,Dt,NumUsers
foo,bar,baz,foobar
foo2,bar2,baz2,foobar2
foo3,bar3,baz3,foobar3
foo4,bar4,baz4,foobar4
</pre>

关于javascript - 按位置而不是名称识别列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42765061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com