首页 > 解决方案 > 字符串到变量的错误转换

问题描述

请帮助我了解为什么当我调用函数并使用“原始形式”的字符串传递参数时,我得到了正确的输出,但是当我首先将它分配给变量时,我得到了不同的输出。

我想将 CSV 字符串转换为 JavaScript 数组数组。当我以原始形式在控制台中传递参数时,即console.log(relay('a;b\nc;d', ';'))我得到了正确的结果,它是一个数组,但是当我将字符串转换为一个名为 dat 的变量时,我得到了错误的数组 [";"] 这基本上是我的第二部分细绳。

relay = (dat, delimiter = ',', tested = false) =>
  dat
  .split('\n')
  .slice(tested ? dat.indexOf('\n') + 1 : 0);
let dat = ('a;b\nc;d', ';');
console.log(relay(dat)); // [";"]
console.log(relay('a;b\nc;d', ';'));

当我使用变量调用函数时,dat我得到的输出为[";"]

当我console.log(relay('a;b\nc;d', ';'))得到正确的输出  时调用该函数["a;b", "c;d"]

​</p>

我期望的结果是一个数组数组[["a;b"], ["c;d"]]

标签: javascript

解决方案


这条线

let dat = ('a;b\nc;d', ';');

不按你的想法做。它使用逗号操作符,它只返回它的右操作数,所以它相当于

let data = ';';

您可以为变量分配一个数组,然后在调用中传播它。

relay = (dat, delimiter = ',', tested = false) =>
  dat
  .split('\n')
  .slice(tested ? dat.indexOf('\n') + 1 : 0);
let dat = ['a;b\nc;d', ';'];
console.log(relay(...dat));
console.log(relay('a;b\nc;d', ';'));


推荐阅读