我想在NodeJS中将数组转换为字符串。
var aa = new Array();
aa['a'] = 'aaa';
aa['b'] = 'bbb';
console.log(aa.toString());
但它不起作用。
任何人都知道如何转换?
答案 0 :(得分:29)
您正在使用Array
类似"关联数组",这在JavaScript中不存在。请改用Object
({}
)。
如果您要继续使用数组,请注意toString()
将所有编号属性加在一起,用逗号分隔。 (与.join(",")
)相同。
a
和b
等属性不会使用此方法,因为它们不在数字索引中。 (即阵列的"主体")
在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(",")
答案 1 :(得分:16)
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"}'
答案 2 :(得分:4)
toString是一个函数,而不是属性。你会想要这个:
console.log(aa.toString());
或者,使用join指定分隔符(toString()=== join(','))
console.log(aa.join(' and '));
答案 3 :(得分:1)
在节点中,您可以说
console.log(aa)
它会按原样格式化它。
如果您需要使用结果字符串,则应使用
JSON.stringify(aa)
答案 4 :(得分:0)
您还可以将数组强制转换为类似...的字符串。
newStr = String(aa);
我也同意Tor Valamo的回答,console.log应该对数组没有问题,除非您正在调试某些东西或只是出于好奇,否则无需转换为字符串。