String to array js

256
05 апреля 2018, 13:48

var a = 'var a = [{"appid":730,"name":"Counter-Strike: Global Offensive","logo":"https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/public\/images\/apps\/730\/d0595ff02f5c79fd19b06f4d6165c3fda2372820.jpg","friendly_name":"CSGO","friendlyURL":"CSGO","availStatLinks":{"achievements":true,"global_achievements":true,"stats":false,"gcpd":false,"leaderboards":false,"global_leaderboards":false},"hours_forever":"62","last_played":1521032036},{"appid":371420,"name":"Teddy Floppy Ear - The Race","logo":"https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/public\/images\/apps\/371420\/f9bb34b5d07c7827a5f5f2b37da87f24b34843b8.jpg","friendlyURL":371420,"availStatLinks":{"achievements":true,"global_achievements":true,"stats":false,"gcpd":false,"leaderboards":false,"global_leaderboards":false},"hours_forever":"7.3","last_played":1519572693}]';

В общем, есть огромный массив (выше его часть) и он в виде строки. Как его сделать в виде массива?

Answer 1

1) У вас Syntax Error, на конце нет ]

2) Как сказал @ДенисЛагуткин используйте eval()

Пример

 var a ='....'
 eval(a);
 console.log(a[0]["appid"]);
Answer 2

Лучше всего использовать функцию JSON.parse

Пример использования

/* заметим что значение это строка */ 
var numbersString = "[0, 1, 2, 3, 4]"; 
 
var numbers = JSON.parse(numbersString); 
 
console.log(numbers);

Функцию eval использовать без необходимости не рекомендуется. Смотрим тут.

В вашем случае для того что бы функция заработала надо перед её выполнением подготовить строку, убрать из начала var a =

Answer 3

var a = 'var a = [{"appid":730,"name":"Counter-Strike: Global Offensive","logo":"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/730/d0595ff02f5c79fd19b06f4d6165c3fda2372820.jpg","friendly_name":"CSGO","friendlyURL":"CSGO","availStatLinks":{"achievements":true,"global_achievements":true,"stats":false,"gcpd":false,"leaderboards":false,"global_leaderboards":false},"hours_forever":"62","last_played":1521032036},{"appid":371420,"name":"Teddy Floppy Ear - The Race","logo":"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/371420/f9bb34b5d07c7827a5f5f2b37da87f24b34843b8.jpg","friendlyURL":371420,"availStatLinks":{"achievements":true,"global_achievements":true,"stats":false,"gcpd":false,"leaderboards":false,"global_leaderboards":false},"hours_forever":"7.3","last_played":1519572693}]'; 
 
let re = /^.*?([[{][\s\S]+[}\]]).*?$/,    // регулярное выражение для поиска  
    jsonStrTr = a.match(re),              // ищем подстроку, которая может оказаться JSON'ом 
    obj;  
if (jsonStrTr) 
  obj = JSON.parse(jsonStrTr[1]);         // парсим совпадение, если таковое имеется 
 
// вывод в читаемом виде 
document.body.style.cssText = 'font: 14px monospace; white-space: pre;';  
document.body.textContent = 'Результат:\n' + JSON.stringify(obj, null, 2); 

READ ALSO
Angular js. Как получить результат из диалогового окна для единственной ячейки без повтора?

Angular js. Как получить результат из диалогового окна для единственной ячейки без повтора?

Есть рабочий код, который позволяет передавать данные из диалогового окна в таблицуДля одного ряда все работает хорошо

253
React Router переход назад

React Router переход назад

1 Есть поиск такого вида /filter/phone/:number

239
3D вращение элемента мышкой html

3D вращение элемента мышкой html

Нужно реализовать подобный функционал

202
Скрытие элемента при клике вне его

Скрытие элемента при клике вне его

Данный код скрывает элементheader__bottom-hover-menu, при клике вне его

240