Why does String([1,2])==“1,2” and not “[1,2]”?
我要做的是改变一个数组,比如,
像刺一样
但不像
即保留所有支架。我试过使用内置的string()函数,但是它给了我"1,2,3,4,17.5"一个内置函数或代码片段,我可以用它来获取"[1,2,[3,4],17.5]"?谢谢!
- @Madarauchiha这不是一个副本,因为它覆盖了所有数组,包括像["meow",7,["q",19.36]]
- 这是一个副本,因为答案三适用于你的问题。
- @不,这不是重复问题的意思。然而,即使是这些问题也足够相似。
- @轻量赛马Sinorbit:重复的问题意味着什么并不重要。这个问题的答案是否在适用的相关问题中找到,这一点很重要。"复制"的意思改变了。这也是为什么你不能在没有投票结果的情况下关闭副本的原因。
- @夫人:对不起,那是完全错误的。当我们将问题A标记为问题B的副本时,这是因为问题A与问题B相同,而不是因为问题A上的一个或多个答案恰好也适合问题B。"副本"的含义没有改变。我们不能很快就反对一个没有投票结果的重复答案的重复答案,因为SE认识到如果将问题A标记为问题B的重复答案不会导致问题A的操作到达他们的答案(尽管这一举动受到了广泛谴责)是浪费时间的。
- 不,这是个骗局。
- @吉米波:我没说这不是一个骗局。事实上,我说这些问题很相似。我投票决定以欺骗结束。我只是说,重要的是问题,而不是答案。它被称为"[这个问题是[那个问题]的副本",而不是"[这个问题不是[那个问题]的副本,但有些答案可能正好匹配!"
- 为什么重要?我们作为一个社区,把这当作一个骗局来结束。这场讨论现在结束了。
- @右折:好吧,很快就升级了!欢迎您在PHP聊天室讨论这方面的细节。
- @ MadaraUchiha:欢迎来到C++休息室!
- 最后一个想法:在重复的问题上提到它也适用于数组和字符串(即"meow")可能是个好主意。
您需要一个JSON字符串:
1 2
| array = [1,2,[3,4],17.5];
JSON.stringify( array ); |
请参阅此问题:
将JS对象转换为JSON字符串
不适用于IE 7及更低版本!
- 只需为ie7添加json2,并在下面支持github.com/douglascorkford/json-js/blob/master/json2.js
- 谢谢,这正是我需要的!我错过了另一个问题,因为我没有搜索JSON。
如果您不担心与其他代码的冲突,可以更改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("]");
}); |
希望这有帮助
- 是的,我知道这是个蹩脚的代码,我只是想把这个想法告诉你。
- 我不认为这是个好例子。有人问这样的问题,对这种代码没有帮助。
- 编辑为更好的编码,@tim
- 我甚至没有看第一个版本,但是任何包含语法错误的代码片段都是一个坏例子。更不用说这段代码还有其他所有错误(例如,如果不是数组,那么在EDOCX1上调用isArray()有什么意义?)
- @INGOB&252;RK修复了语法错误(我在运行中完成了)。我想把这个想法告诉大家,不要让那些家伙为他编码。
- @pablo208这是一个很好的选择,如果它起作用的话(我在V8中得到了一个意外的标识符),但是附带说明,它不适用于像["meow",7,["q",19.36]这样的嵌套数组]
- @Samquinn抱歉使用了而不是in(最近主要使用coffeescript),我认为node也可能与isarray有问题,因此这可能是另一个原因。