2013-07-25 7 views
0

То, что я хочу сделать, это изменить массив, скажем,Почему String ([1,2]) == "1,2", а не "[1,2]"?

[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». Есть ли встроенная функция или фрагмент кода, который я могу использовать для получения «[1,2, [ 3,4], 17,5] "?
Спасибо!

+0

@MadaraUchiha Это не дубликат, потому что это охватывает все массивы, включая тыс такие как ["meow", 7, ['Q', 19.36]] –

+1

Это * * *, это дубликат, потому что ответ на ваш вопрос применим к вашему вопросу. –

+0

@MadaraUchiha: Нет, это не то, что означает дубликат _question_. Однако даже вопросы достаточно схожи. –

ответ

5

Вы хотите строку JSON:

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

Смотрите этот вопрос:

Convert JS object to JSON string

Не работает на IE 7 и ниже!

+2

Просто добавьте json2 для IE7 и ниже, поддерживая https://github.com/douglascrockford /JSON-js/blob/master/json2.js – mpen

+0

Спасибо, это именно то, что мне нужно! Я пропустил этот другой вопрос, потому что я не искал JSON. –

1

Если вы не беспокоитесь о конфликтах с другими частями кода, вы можете изменить 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]" 
0

Я уверен, что вы могли бы создать простой способ сделать это, если вы не хотите использовать JSON, что-то по следующему:

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

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

Надеется, что это помогает

+0

Да, я знаю, что это дерьмовый код. Я просто хотел передать вам эту идею. – Pablo208

+0

Я не думаю, что это хороший пример. Кто-то, задающий такой вопрос, не помогает с таким кодом. –

+0

, отредактированный для лучшего кодирования, @ Tim – Pablo208

Смежные вопросы