2016-01-22 85 views
0

我有一個類別列表存儲在分號字符串中的分號。如何從分隔字符串創建數組?

我有一個kendo選擇標籤,我需要用這些值填充。

選擇標記所需要的值作爲表格的數組:

[{catText: "first category", catValue: "first category"},{catText: "second category", catValue: "second category"}...] 

注:文本和值包含相同的字符串。

我的JavaScript/jQuery是:

//define my category dataobject 
    function Cat(catValue,catText) { 
     this.catValue= catValue; 
     this.catText= catText; 
    } 

    // set value for msCategories 
    var vData = []; 
    var cats= '@Model.Categories'; 
    alert(cats); //this returns "Alcohol; Vodka" 
    var cData = cats.split(";"); 
    $.each(cData, function (index, value) { 
     var obj = new Cat(value, value); 
     vData.push(obj); 
    }); 

alert(vData); //this gives me [{object Object},{object Object}] 

我如何得到一個數組,其中這將是[{catText: "Alcohol", catValue: "Alcohol"},{catText: "Vodka", catValue: "Vodka"}]

+0

如果用'console.log'替換'alert',會發生什麼?在控制檯中看到了什麼? – SlashmanX

+0

它看起來像你的代碼已經給你的數組你的要求:一個對象數組,每個對象包含一個catText和一個catValue。問題出現在alert語句中:它不像您期望的那樣輸出數組(正如其他人在回答中指出的那樣)。但是,數組本身確實包含正確的內容。 – wintvelt

回答

3

當您運行警報(),它將返回的類型項目,而不是字符串化的值。

如果您使用console.log(vData),您很可能會看到您期望的結構中的數據。

其他的事情,你可以嘗試將

alert(vData[0], vData[1], vData[2]);如果你只需要調試的東西

甚至

alert(JSON.stringify(vData));

所以,你最有可能沒有問題,只是您試圖查看信息的方式並不適合。

+0

好的...使用警報(JSON.stringify(vData));我得到[{「catText」:「酒精」,「catValue」:「酒精」},{「catText」:「伏特加」,「catValue」:「伏特加」}],即我得到catText和catValue引號。 – Mych

+0

使用JSON.stringify會使它成爲一個字符串,如果需要可以將其轉換回JSON,所以當它通過JSON.stringify傳遞時,它會在它們周圍添加引號。嘗試只使用console.log(vData),如果這給你所期望的結構,那麼你的一切都很好! – Owen

1

所以,你要JSON(JavaScript對象符號),你可以做到這一點JSON.stringify

var vData = [{catText: "first category", catValue: "first category"},{catText: "second category", catValue: "second category"}] 
 

 
document.write(JSON.stringify(vData));

然後你就可以看到你的數組包含你所期望的,alert只嘗試調用object.toString()在每個項目上,因此對象的數組返回[object Object]

相關問題