【问题标题】:Javascript - array.map returns several arrays, why?Javascript - array.map 返回几个数组,为什么?
【发布时间】:2019-09-09 11:03:05
【问题描述】:

我目前正在尝试解析 CSV 文件。

csv文件的格式:(仅举例,因为我无法显示数据)

我为此使用了脚本 d3。

我的代码目前看起来像这样:(它读取 csv 数据并根据我的需要进行排列。)

var myArray = []

d3.csv("Data.csv", function(data){
    myArray.push(data)
    const uniqueKeys = [...new Set(...myArray.map(i => Object.keys(i)))];

const res = uniqueKeys.map(k => {
    return [k, ...myArray.map(i => i[k]).filter(i => i !== null && i !== undefined)];
});
console.log(res);

我需要一个像这样的数组:

[[Header1,A1,B1,C1,D1,E1,F1],[Header2,A2,B2,C2,D2,E2],[Header3,A3,B3,C3,D3,E3]...]

现在我得到了我需要的数组,但问题是,脚本以某种方式输出了几个数组:

我只需要最后一个,因为这个是完整的。其他数组由于某种原因不完整。 (可以看到里面的元素少了???)

我需要:

  1. 删除所有其他数组,但不删除最后一个

  1. 编辑只输出完整(最后一个)的代码

谢谢! :)

【问题讨论】:

  • 什么是 D3 版本?

标签: javascript arrays csv d3.js


【解决方案1】:

只需拨打pop 即可获得最后一个电话:

const res = uniqueKeys.map(k => {
    return [k, ...myArray.map(i => i[k]).filter(i => i !== null && i !== undefined)];
}).pop().pop();

【讨论】:

  • 在数组中我还有其他数组。当我执行 .pop() 时,我会得到相同数量的数组,但只针对最后一行......就像这样:jsfiddle.net/5bu8mkxt/1
  • 那么你想要我的代码生成的最后一项吗?
  • 是的,我想要最后一个数组作为输出
  • OK @House97_ - 我已经编辑了我的答案,现在对你有用吗?
  • 不,那么它只输出第一个数组的最后一个元素(元素最少的数组)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-30
  • 2022-11-25
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 2020-08-19
相关资源
最近更新 更多