【问题标题】:Why does String([1,2])=="1,2" and not "[1,2]"? [duplicate]为什么 String([1,2])=="1,2" 而不是 "[1,2]"? [复制]
【发布时间】:2013-07-25 22:16:51
【问题描述】:

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

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

像刺痛一样

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

但不喜欢

"1,2,3,4,17.5"

即保留所有括号。我尝试使用内置的 String() 函数,但这给了我 "1,2,3,4,17.5" 是否有内置函数或代码 sn-p 可以用来获取 "[1,2 ,[3,4],17.5]"?
谢谢!

【问题讨论】:

  • @MadaraUchiha 这不是重复的,因为它涵盖了所有数组,包括 ["meow",7,['Q',19.36]]]
  • 重复的,因为答案适用于您的问题。
  • @MadaraUchiha:不,这不是重复 question 的意思。但是,即使是问题也足够相似。
  • @LightnessRacesinOrbit:重复的问题是什么意思并不重要。 这个问题的答案是否在链接的问题中找到很重要,这适用。 “重复”的含义发生了变化。这也是为什么你不能关闭没有投票答案的重复项的原因。
  • @rightfold:嗯,升级很快!欢迎您在PHP chat room 中讨论这方面的细节。

标签: javascript arrays string


【解决方案1】:

如果您不想使用 json ,我很确定您可以创建一个简单的方法来执行此操作, 以下内容:

(function toBracketedString(arr) {
     if (!_.isArray(arr)) { return ""; }
     var base = "[";

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

希望对你有帮助

【讨论】:

  • 是的,我知道这是糟糕的代码,我只是想把这个想法传达给你
  • 我不认为这是一个很好的例子..有人问这样的问题,这种代码没有帮助..
  • 编辑为更好的编码,@Tim
  • 我什至没有看第一个版本,但是任何包含语法错误的 sn-p 已经是一个坏例子。更不用说这段代码存在的所有其他错误(例如,如果不是数组,在 arr 上调用 isArray() 有什么意义?)
  • @IngoBürk 修复了语法错误(我是即时完成的)。我正在努力传达这个想法,而不是为他编写代码
【解决方案2】:

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

(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]"

【讨论】:

    【解决方案3】:

    你想要一个 JSON 字符串:

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

    看到这个问题:

    Convert JS object to JSON string

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

    【讨论】:

    猜你喜欢
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多