2012-01-18 81 views
10

我想将数组转换为NodeJS中的字符串。将数组转换为NodeJS中的字符串

var aa = new Array(); 
aa['a'] = 'aaa'; 
aa['b'] = 'bbb'; 

console.log(aa.toString()); 

但它不起作用。
任何人都知道如何转换?

回答

18

您使用的Array像一个“关联数组”,这不存在JavaScript的使用。改为使用Object{})。

如果您打算继续使用数组,请注意toString()会将所有编号为的属性连接在一起,并用逗号分隔。 (与.join(",")相同)。

属性,如ab不会拿出使用这种方法,因为他们不是在数字指标。 (即阵列的“主体”)

在JavaScript中,Array继承自Object,因此您可以像添加其他对象一样添加和删除属性。所以对于一个数组来说,编号的属性(它们在技术上只是引擎盖下的字符串)是什么在诸如.toString(),.join()等方法中很重要。您的其他属性仍然存在并且非常容易访问。 :)

阅读Mozilla's documentation了解有关阵列的更多信息。

var aa = []; 

// these are now properties of the object, but not part of the "array body" 
aa.a = "A"; 
aa.b = "B"; 

// these are part of the array's body/contents 
aa[0] = "foo"; 
aa[1] = "bar"; 

aa.toString(); // most browsers will say "foo,bar" -- the same as .join(",") 
3

toString是一个函数,而不是一个属性。你会想这样的:

console.log(aa.toString()); 

另外,使用加入到指定分隔符(的toString()===加入( ''))

console.log(aa.join(' and ')); 
11

toString是一个方法,所以你应该添加括号()以进行函数调用。

> a = [1,2,3] 
[ 1, 2, 3 ] 
> a.toString() 
'1,2,3' 

此外,如果你想使用字符串作为键,那么你应该考虑使用Object,而不是Array,并使用JSON.stringify返回一个字符串。

> var aa = {} 
> aa['a'] = 'aaa' 
> JSON.stringify(aa) 
'{"a":"aaa","b":"bbb"}' 
+0

为括号输入错误。它被纠正了。你能解释为什么使用Object作为键的字符串。为什么Array不能被使用?为什么Object.toString()不起作用? – Magic 2012-01-18 08:50:51

+1

@Magic看到这篇文章:http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/ – qiao 2012-01-18 09:30:55

1

在节点上,你就可以说

console.log(aa) 

,它会它,因为它应该格式化。

如果您需要使用生成的字符串,你应该

JSON.stringify(aa) 
+0

JSON.stringify(aa)无法打印内容。因为我的数组是字符串索引。它只适用于int索引数组。 – Magic 2012-01-18 08:49:25

+1

@Magic - js中没有这样的字符串索引数组。aa ['a']工作的唯一原因是因为数组类型继承自Object,所以它会模拟一个关联数组,因为实际上很多数组函数将不再起作用,因为它存在其他缺陷。如果你需要关联数组,你应该使用一个对象'{a:0,b:4}'而不是数组类型,它只能在数字索引'[0,4] – 2012-01-18 09:54:51