2016-01-22 46 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]

相关问题