2016-04-14 27 views
0

Veri dizisini yüklemek için google grafiğini kullanmaya çalışıyorum. Benim dize girişi Yük dizisini javascript dizisine ekleme

var data = "[['Time', 'TasksRunning'],[1.9520154, 0]]"; 
var tableData = google.visualization.arrayToDataTable(data); 

ben mesajı

0x800a139e - JavaScript runtime error: Not an array 

benim verilerle nesi var olsun?

+4

Bu bir dizi gerektirir, bir dizi verdi, bunun hakkında ne kafa karıştırıcı? – Barmar

cevap

0

Bu bir dizi değil, bir dizedir. Tırnaklara dikkat et.

Tırnak işaretleri kaldırılırsa dizininiz olur.

+0

Ben sadece bu ikinci fark etti. Onun girdisi bir dosyadan okunmaktadır, bu yüzden dize formatındadır. Bir dizeden diziye dönüştürmek mümkün mü? – NZJames

+0

@NZJames JSON biçimini karşılarsa, 'JSON.parse() 'işlevini kullanabilirsiniz. – alex

+0

Tek tırnaklar desteklenmiyor mu? Ben sadece denedim ve geçersiz karakter – NZJames

0

Veri değişkeninizin değeri, bir dize haline gelen tırnak işaretleridir. Bunları kaldırın ve bir dizi yapmak için virgülle ayrılmış değerlerin etrafında [] bulun.

var data = [['Time', 'TasksRunning'],[1.9520154, 0]]; 

Düzenleme: Bir metin dosyasından okuyorsanız beri , sen dize dışına dizisini oluşturmak için bazı manipülasyon yapmak gerekir. Belki şu gibi bir şey:

var string='["Hello",["one","two"],3]'; 
var array=JSON.parse(string); 

Bu ağacın içeren bir dizi oluşturur:

//Original data 
var data = "[['Time', 'TasksRunning'],[1.9520154, 0]]"; 
//Exclude the outer brackets 
var parsed = data.substr(1,data.length-2); 
//Split into separate parts 
var parts = updatedData.split('],['); 
//Recreate the new array 
var arr = []; 
for(var a = 0; a < parts.length; a++) { 
    //Remove the brackets from the parts 
    var val = parts.replace(/[\[\]]/g,''); 
    arr.push(val); 
} 
//Yields: ["'Time', 'TasksRunning'", "1.9520154, 0"] 
+0

Basitlik için onu bir dize olarak yazdım. Aslında bir dosyadaki dize içeriğini okuyor ve yönteme bir değişken olarak aktarıyorum. Yukarıdaki dize dosyanın içeriği ise, javascript dizisi olarak nasıl yükleyebilirim, herhangi bir yolu var mı? – NZJames

+0

@NZJames Yorumunuzu karşılamak üzere güncellendi – Xaniff

0

dize varsayarsak sadece JSON.parse kullanabilirsiniz (DAİMA yerine tek tırnak çift tırnak kullanarak) JSON biçimli olduğu öğeler: bir dize, başka bir dizi ve bir sayı

Pro-ipucu: Kodlama yaparken her zaman tek tırnaklı karakterleri kullanın, böylece bir JSON dizesi veya bir HTML/XML etiketi oluştururken çift tırnak karakterlerinden kaçmanız gerekmez. Öznitellikler.

+0

* Kodlama yaparken her zaman tek tırnaklı karakterleri kullanın * en iyi tavsiye değil. Tek tırnaklar, bazı dillerde çift tırnak işareti yapmak için farklı şeyler anlamına gelebilir. JSON veya HTML ile doğrudan bir dize değişmezi oluşturmak, bir şeylerin daha iyi bir şekilde yapılabileceğini gösteren bir işarettir. – alex

+0

Her zaman Javascript'e atıfta bulunuyoruz, biliyorum ki Java'da çift tırnak kullanmalısınız çünkü tek olanlar sadece karakterler içindir –

0

Bunu önermekten nefret ediyorum, ancak dosyanın kökeni güvenilir ise, dizeyi bir diziye dönüştürmek için eval() kullanabilirsiniz.

var data = eval("[['Time', 'TasksRunning'],[1.9520154, 0]]"); 
var tableData = google.visualization.arrayToDataTable(data); 
İlgili konular