2016-03-21 35 views
1

str = "[[1,Warriors,NBA],[2,Kings,NBA],[3,Knicks,NBA]]" varsa, bunu JavaScript'te bir diziye nasıl dönüştürebilirim?Bir diziye benzeyen bir dizgiyi gerçek diziye dönüştürme

Dizinin her öğesinin bir dizinin kendisi olduğu bir dizi.

Mümkün mü?

+0

Neden başlamak için bir dizi oluşturmak ya da en azından geçerli JSON – adeneo

+0

Bu, içinde kalmış olduğunuz içerik biçimiyse, o biçimi anlayan kendi çözümleyicinizi yazmanız gerekir. Bu standart dışı formatı ayrıştırmak için önceden oluşturulmuş bir yol yoktur. – jfriend00

+0

Bu dizenin kaynağı nedir? Kaynakta geçerli bir json yapmak – charlietfl

cevap

2

Sen 2D diziler için araya bu ilkel fonksiyonu deneyebilirsiniz:

function customParse(data){ 
 
    arr = [] 
 
    for(var i = 0; i < str.length; i++){ 
 
     if(str[i] == ','){ 
 
     if(!isNaN(str[i-1])){ 
 
      arr.push(',') 
 
      arr.push('"') 
 
     }else{ 
 
      if(str[i-1] != "]"){ 
 
      arr.push('"') 
 
      arr.push(',') 
 
      arr.push('"') 
 
      }else{ 
 
      arr.push(',') 
 
      } 
 
     } 
 
     }else{ 
 
     if(str[i] == ']' && str[i-1] != ']'){ 
 
      arr.push('"') 
 
     } 
 
     arr.push(str[i]) 
 
     } 
 
    } 
 
    return JSON.parse(arr.join("")) 
 
} 
 

 
str = "[[1,Warriors,NBA],[2,Kings,NBA],[3,Knicks,NBA]]" 
 
result = customParse(str) 
 
alert("Raw: "+result); 
 
alert("Stringified: "+JSON.stringify(result));
Biraz kirli

2

ancak hile olacaktır. "eşleşme" değişkeni dizilerinizin dizisini içerir.

var str = "[[1,Warriors,NBA],[2,Kings,NBA],[3,Knicks,NBA]]"; 
var cleanStr = str.substring(1,str.length-1) 

var matches = []; 

var pattern = /\[(.*?)\]/g; 
var match; 

while ((match = pattern.exec(cleanStr)) != null) 
{ 
    matches.push(match[1].split(",")); 
} 

Ayrıca, seçeneğe sahipseniz, yalnızca dizini javascript'te tanımlayın.

var list = [[1,'Warriors','NBA'],['2','Kings','NBA'],[3,'Knicks','NBA']]; 
0
var array = JSON.parse("[" + str + "]"); 

ya da dizelerden oluşan bir Array ile sona erecek .split() kullanabilirsiniz.