2016-10-14 1 views
0

я должен повторить функциональность JSON.stringify для класса и я застрял ...Как сохранить котировки значений в массиве

Если я передан массив, мне нужно вернуть точный массив как строка. Однако, когда я возвращаю массив, он удаляет цитаты из любых значений, которые являются строками. Например:

var arr = [8, "hello"]; 
var addQuotes = function(arr){ 
      return ('[' + arr + ']'); 
     } 
addQuotes(arr); 
//"[8, hello]" 

Однако, мне нужно, чтобы вернуться:

"[8, "hello"]" 

Как сохранить кавычки на значения массива?

+0

Вы должны смотреть на значения одного в то время, и если дана строка, добавить кавычки к выходу для этого значения. –

+0

нет кавычек. На самом деле это не JSON.stringify. Для этого потребуется еще один код –

+2

Это потому, что вы используете массив в контексте строки, а JS будет выделять кавычки при подстановке. 'x = [1," hello "]; y = '' + x' -> '[1, hello]'. Строительство json - это не просто вопрос, связанный с текстом. Вы буквально создаете Javascript-код (с гораздо более строгим синтаксисом) и ДОЛЖНЫ строить синтаксически действующие JS –

ответ

0

Я предлагаю этот код:

var arr = [8, "hello"]; 
var arrString = arr.map(x => typeof x === 'string' ? "\"" + x + "\"" : x); 
result = "\"[" + arrString.join(", ") + "]\"" 
console.log(result); //) "[8, "hello"]" 
+0

Это не полипол, но это обеспечит частичную реализацию, которая работает для данных в вопросе, за исключением того, что внешние одинарные кавычки делают ее недействительной как данные JSON. Их там не должно быть. –

+0

Да, теперь лучше и спасибо за ваше видение X –

+1

Но внешние двойные кавычки тоже не имеют смысла. Вы запутываете, как вы представляете данные JSON в программе JS с данными JSON. Если у вас была программа, которая имела «var j =» [8, «hello»] '', то' j' будет содержать текст JSON, особенно * без * внешних кавычек. 'j [0] ===" '"; // false j [0] === "["; // true'. Таким образом, представление * actual * JSON должно начинаться с '[' и заканчиваться '' ''. –

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