JavaScript 数组到 CSV

2024-01-02

我关注了这个帖子如何将 JavaScript 数组信息导出到 csv(在客户端)? https://stackoverflow.com/questions/14964035/how-to-export-javascript-array-info-to-csv-on-client-side获取写入为 csv 文件的嵌套 js 数组。

该数组看起来像:

var test_array = [["name1", 2, 3], ["name2", 4, 5], ["name3", 6, 7], ["name4", 8, 9], ["name5", 10, 11]];

链接中给出的代码运行良好,除了在 csv 文件的第三行之后,所有其余值都在同一行上 例如

名称1,2,3
名称2,4,5
名称3,6,7
名称 4,8,9 名称 5,10,11 等

谁能解释这是为什么吗?使用 Chrome 或 FF 也是如此。

Thanks

EDIT

jsfiddlehttp://jsfiddle.net/iaingallagher/dJKz6/ http://jsfiddle.net/iaingallagher/dJKz6/

Iain


引用的答案是错误的。你必须改变

csvContent += index < infoArray.length ? dataString+ "\n" : dataString;

to

csvContent += dataString + "\n";

至于为什么引用的答案是错误的(有趣的是它已被接受!):index,第二个参数forEach回调函数,是循环数组中的索引,将其与大小进行比较是没有意义的infoArray,它是所述数组的一项(恰好也是一个数组)。

EDIT

距离我写这个答案已经过去六年了。许多事情都发生了变化,包括浏览器。以下是答案的一部分:

老化部分的开始

顺便说一句,引用的代码不是最优的。您应该避免重复附加到字符串。您应该追加到一个数组,并在最后执行 array.join("\n") 。像这样:

var lineArray = [];
data.forEach(function (infoArray, index) {
    var line = infoArray.join(",");
    lineArray.push(index == 0 ? "data:text/csv;charset=utf-8," + line : line);
});
var csvContent = lineArray.join("\n");

老化部分结束

(请记住,CSV 的情况与通用字符串连接有点不同,因为对于每个字符串,您还必须添加分隔符。)

无论如何,以上看起来not现在已经不再是这样了,至少对于 Chrome 和 Firefox 来说不是(不过对于 Safari 来说似乎仍然如此)。

为了结束不确定性,我写了一个jsPerf测试 https://jsperf.com/csv-string-concatenation/1测试,为了以逗号分隔的方式连接字符串,将它们推入数组并连接数组是否更快,或者先用逗号连接它们,然后使用 += 运算符直接与结果字符串连接。

请点击链接并运行测试,以便我们有足够的数据能够谈论事实而不是观点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 数组到 CSV 的相关文章

  • 尝试将布尔 C# 变量传递给 javascript 变量并将其设置为 true

    在我的 aspx 页面中 我将布尔变量 C 传递给需要布尔类型的 javascript 函数 但遇到了问题 但是 C 变量返回 True 而 javascript 不喜欢大写 myjavascript 如果我将 c 变量转换为字符串 那么我
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • 在 Vue.js 中从父组件执行子方法

    目前 我有一个 Vue js 组件 其中包含其他组件的列表 我知道使用 vue 的常见方式是将数据传递给孩子 并从孩子向父母发出事件 但是 在这种情况下 我想在子组件中的按钮出现时执行子组件中的方法 parent被点击 哪种方法最好 一种建
  • 如何重定向到 instagram://user?username={username}

    我的 html 页面上有这个链接 可以在特定用户上打开 Instagram 应用程序 a href Link to Instagram Profile a 我一直在寻找自动运行 url instagram user username USE
  • 交换关联数组中的两个项目

    Example arr array apple gt sweet grapefruit gt bitter pear gt tasty banana gt yellow 我想调换一下柚子和梨的位置 这样数组就变成了 arr array ap
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 如何监听 jQuery AJAX 请求?

    以下两种实现 ajaxRequest 1 2 的方法应该是等效的 话说回来 为什么验证回调已执行的单元测试 3 在 1 中成功而在 2 中失败 我应该如何重写测试 3 来监视 2 中的成功回调 如果我尝试stub jQuery ajax使用
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • 在 webpack 2.x 中使用 autoprefixer 和 postcss

    如何使用autoprefixer使用 webpack 2 x 以前 它曾经是这样的 module loaders test scss loader style css sass postcss postcss gt return autop
  • Babel 7 Jest Core JS“TypeError:wks不是函数”

    将我的项目升级到 Babel 7 后 通过 Jest 运行测试会抛出以下错误 测试在 Babel 6 中运行没有任何问题 但在 Babel 7 中失败并出现以下错误 TypeError wks is not a function at Ob
  • 为什么在 Internet Explorer 中访问 localStorage 对象会引发错误?

    我正在解决一个客户端问题 Modernizr 意外地没有检测到对localStorageInternet Explorer 9 中的对象 我的页面正确使用 HTML 5 文档类型 并且开发人员工具报告该页面具有 IE9 的浏览器模式和 IE
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js)Vue Js

    我从 GitHub 下载了一个我和我的朋友正在开发的项目 但是当我尝试运行时 npm run serve 我收到这个错误 src main js 中的错误 Module build failed from node modules babe
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv

随机推荐

  • 当模板类型是基本类型时通过引用传递的成本

    我一直听说确保最佳性能的良好做法是 通过基本类型 int double 按价值 通过常量引用传递类 如今 使用 C 11 并在编译器下进行全面优化 当通过 const 引用传递基本类型时是否会产生开销 而且 当T is int将实现以下功能
  • 如何防止收到的短信到达收件箱?

    我正在开发一个简单的应用程序 它接收但不处理短信 它检查每条传入的短信是否有特定的关键词 如果短信包含该关键字 那么它会做出相应的响应 如果关键字不存在 那么我的应用程序什么也不做 我有这么多工作 我想知道是否有一种方法可以阻止手机上的默认
  • 鼠标移出时关闭 AJAX 控制工具包 BallonPopupExtender

    有人知道如何从客户端关闭 Ballon Popup Extender 吗 一切都很好 但由于我将 BPE 设置为在鼠标悬停时显示 所以它在鼠标移出时没有任何关闭或隐藏方法 这确实不切实际 我尝试过 function hideElement
  • 为什么要刷新由其他逻辑处理器引起的内存顺序冲突的管道?

    The vTune 文档中描述了 Memory Order Machine Clear 性能事件 https software intel com en us vtune amplifier help mo machine clear ov
  • Flex 到 HTML5 - 表示层(canvas、div、???)

    我的问题是关于从 Flex3 迁移到 HTML5 的问题 我实际上想迁移自己而不是应用程序 问题是 什么方向是最好的 和Flex知识最相似的 也许我会重新实现我的 Flex 库中已有的一些自定义组件 我认为我必须在 HTML5 中自己实现一
  • Java中的多态复制

    我突然遇到了一个用Java进行深度多态复制的问题 实施Clonable解决了我的问题 但它通常被称为 坏 技术 因此 我尝试寻找 不可克隆 的解决方案 public class Parent int x public Parent publ
  • C 中空结构的大小是多少?

    据我说 它是零 但似乎有点混乱here https stackoverflow com questions 1626017 why sizeofspinlockt is greater than zero on uni processor
  • 通过套接字使用 boost 发送和接收压缩文件

    在我的项目中 通过套接字读取和写入消息是使用 boost 的 Zlib 过滤器进行压缩的 我想知道如何执行相同的操作files 有什么更好的方法可以提高速度 不使用硬盘将数据保存在缓冲区中 我在使用 boost 传输文件时遇到问题 因此欢迎
  • 带有关闭按钮的 Angular UI Bootstrap 弹出框

    我正在使用 Angular UI Bootstrap 创建弹出窗口 但我找不到在弹出窗口内添加关闭按钮的选项 我自定义了弹出框模板以包含关闭按钮 但我仍然无法找到关闭弹出窗口的函数 事件 环境isOpenfalse 第一次起作用 因为它只是
  • 如何在 PHP-CS-Fixer 中配置 HeaderCommentFixer

    我想用HeaderCommentFixer https github com FriendsOfPHP PHP CS Fixer blob 1 12 Symfony CS Fixer Contrib HeaderCommentFixer p
  • 将 Github 页面重定向到自定义域

    我创建了一个 Github Pages 站点 并将其放在 github 帐户的存储库 abc 上 用户名为 xyz 所以 我的网站现在位于 xyz github io abc 我使用自定义域创建了一个 cname 文件 并使用 Github
  • ClojureScript:如何通过原型向 JS 对象添加方法?

    我正在尝试向现有的 JavaScript 系统添加一些功能 然后再次从 JavaScript 使用 而不是在 ClojureScript 命名空间内 也许这是不可能的 这是我想做的事情的简化 JavaScript String protot
  • 无法使用 Express.js 更改 Favicon

    这是一个非常基本的问题 但我正在尝试使用以下命令更改我的 node js Express 应用程序的图标 app use express favicon dirname public images favicon ico 我仍然得到默认的图
  • 为什么不让每个节点都成为种子节点

    我是卡桑德拉新手 我了解种子节点的用途 但是种子节点有任何相关成本吗 如果是这样 它们是什么 另外 我想知道为什么不让每个节点都成为种子节点 作为种子 基本上没有本地运行时成本 除了您可能会比非种子节点收到更多的八卦流量之外 然而 随着种子
  • 如何通过进程生成器在 4-5 秒后停止执行命令?

    参考代码 ProcessBuilder ps4 Process pr4 null String batchFile3 new File path src example sh ps4 new ProcessBuilder batchFile
  • PyQt:使用不同的 ItemIgnoresTransformations 标志移动多个项目

    有时选定的项目不会一起移动 这种情况发生在具有两种类型项目的应用程序中 常规物品 处理 与ItemIgnoresTransformations标志 缩放时它们必须保持相同的大小 当它们一起被选择并用鼠标移动时 它们预计会被平移相同的量 它们
  • 有没有办法使用 CSS 使子 DIV 的宽度比父 DIV 宽?

    有没有办法让父容器 DIV 中的子 DIV 比其父容器宽 子 DIV 需要与浏览器视口的宽度相同 See example below 子DIVmust保留为父 div 的子级 我知道我可以在子 div 上设置任意负边距以使其更宽 但我无法弄
  • 必须在我的 Rails 3 应用程序的控制器操作中显式渲染 :layout => 'application'

    我必须在控制器操作中显式渲染 layout gt application 才能让我的新 Rails 3 应用程序实际使用 application html erb 布局文件 有什么明显的事情可以看出我做错了吗 如果我不调用 layout 选
  • 使用 Keras,如何输入 X_train 图像(超过一千张图像)?

    我的应用程序是使用机器学习 卷积神经网络 的事故避免汽车系统 我的图像是 200x100 JPG 图像 输出是 4 个元素的数组 汽车将向左 向右 停止或前进 所以输出将让一个元素成为1 根据应采取的正确行动 和其他 3 个要素将是0 我现
  • JavaScript 数组到 CSV

    我关注了这个帖子如何将 JavaScript 数组信息导出到 csv 在客户端 https stackoverflow com questions 14964035 how to export javascript array info t