关于javascript:为什么String([1,2])==“1,2”而不是“[1,2]”?

Why does String([1,2])==“1,2” and not “[1,2]”?

本问题已经有最佳答案,请猛点这里访问。

我要做的是改变一个数组,比如,

1
[1,2,[3,4],17.5]

像刺一样

1
"[1,2,[3,4],17.5]"

但不像

1
"1,2,3,4,17.5"

即保留所有支架。我试过使用内置的string()函数,但是它给了我"1,2,3,4,17.5"一个内置函数或代码片段,我可以用它来获取"[1,2,[3,4],17.5]"?谢谢!


您需要一个JSON字符串:

1
2
array = [1,2,[3,4],17.5];
JSON.stringify( array );

请参阅此问题:

将JS对象转换为JSON字符串

不适用于IE 7及更低版本!


如果您不担心与其他代码的冲突,可以更改Array.prototype.toString

1
2
3
4
5
6
7
8
9
(function () {
    var arrayString = Array.prototype.toString;
    Array.prototype.toString = function toString() {
        return '[' + arrayString.call(this) + ']';
    }
}());

[1,2,[3,4],17.5].toString();
//"[1,2,[3,4],17.5]"


如果您不想使用JSON,我相信您可以创建一个简单的方法来完成这个任务,以下内容:

1
2
3
4
5
6
7
8
9
(function toBracketedString(arr) {
     if (!_.isArray(arr)) { return""; }
     var base ="[";

     for (var element in arr){
         base.append(","+element.toString());
     }
     base.append("]");
});

希望这有帮助