0

我正在尝试与依赖于通过 GET 请求作为制表符分隔的字符串发送的值的旧系统集成。join()我有我的数据在一个数组中,但是在以正确的方式尝试它时遇到了问题。

这是我尝试过的,但都不起作用;

var myArray = ["a", "b", "c"]

myArray.join(\t);
myArray.join(/\t/);
myArray.join('\t');
myArray.join('\\t');
myArray.join('   '); // tab character

编辑

看起来实际的问题似乎是加入\t确实有效,但是当它被 URL 编码时,选项卡并没有变成%09它应该的样子,而是被删除了。

所需的 URL 编码变量:

"?tags=a%09b%09c"

实际输出:

"?tags=abc"

有谁知道如何解决这个问题?

4

3 回答 3

6

这个适用于我的 chrome 控制台:

var myArray = ["a", "b", "c"];

console.log(myArray.join('\t'));

请参阅此jsfiddle

这个也有效:

myArray.join('   '); // tab character

浏览器:Chrome 26.0.1410.65 (os x)

编辑

var myArray = ["a", "b", "c"];

var string = myArray.join('\t');

var url = encodeURIComponent(string);

console.log(url); //output : a%09b%09c 

http://jsfiddle.net/mGZdk/2/

于 2013-04-19T13:25:55.433 回答
1

您的问题是您没有将其分配给新变量。Join() 不会修改原始变量。尝试这个:

var myArray = ["a", "b", "c"]

var array_string = myArray.join('\t');

alert(array_string);
于 2013-04-19T13:28:20.490 回答
0

\t应该管用...

var arr = [1, 2, 3];
var str = arr.join("\t");

但是,您如何显示您的输出?如果您尝试在普通 HTML 页面上显示内容,选项卡将显示为空格。如果您将内容放在特殊元素中,例如<pre>,它们应该会正常显示。

我知道这是一个讨厌的解决方案,但你可以使用多个&nbsp;...

var arr = [1, 2, 3];
var str = arr.join("&nbsp;&nbsp;&nbsp;&nbsp;"); // s-sorry ;__;
于 2013-04-19T13:27:50.910 回答