JavaScript 打印带括号和引号的数组字符串

16
var fruits = ["Banana", "Orange", "Apple", "Mango"];
如果我有上面的数组并想将其作为 ["Banana", "Orange", "Apple", "Mango"] 输出给用户,那么最好的方法是什么?我尝试过 fruits.toString(); ,但它输出为 Banana,Orange,Apple,Mango

2
element.innerHTML = '<pre>' + JSON.stringify(fruits, null, 4) + '</pre>'; - adeneo
尝试使用[" + fruits.map(function(x){ return '"' + x + '"'; }).toString() + "]" - Jose Ricardo Bustos M.
3个回答

32

使用 JSON.stringify

JSON.stringify(fruits)

2
这确实是一个简单的解决方案,但最终你会得到"["Banana","Orange","Apple","Mango"]"而不是"["Banana", "Orange", "Apple", "Mango"]"。如果您对空格不敏感,那么JSON.stringify就是您的选择。 - yopefonic

5
为了做到这一点,您需要遍历数组并从头开始构建字符串。
因此,类似以下代码:
var fruits = ["Banana", "Orange", "Apple", "Mango"];

// first make sure that each fruit is between quotes
var fruitsResult = fruits.map(function(fruit) {
    return '"' + fruit + '"';
});

// join the fruits with the comma's in between
var result = fruitsResult.join(', ');

// add the final brackets around it
result = '[' + result + ']'

这是一个基本的解决方案,你可以将其作为单个函数添加到某个位置并将数组传递给它,或者你可以扩展Array原型与你自己的方法,这样你就可以调用fruits.toMyStringFunction()。如何实现取决于你。

注意:我使用了Array.prototype.map()方法,在现代浏览器中得到支持,但在IE8及更低版本中会出现一些问题。这一步也可以使用for循环完成,但这更加优雅。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接