如何从分隔字符串创建数组?
问题描述:
我有一个类别列表存储在分号字符串中的分号。如何从分隔字符串创建数组?
我有一个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"}]
答
当您运行警报(),它将返回的类型项目,而不是字符串化的值。
如果您使用console.log(vData)
,您很可能会看到您期望的结构中的数据。
其他的事情,你可以尝试将
alert(vData[0], vData[1], vData[2]);
如果你只需要调试的东西
甚至
alert(JSON.stringify(vData));
所以,你最有可能没有问题,只是您试图查看信息的方式并不适合。
答
所以,你要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]
如果用'console.log'替换'alert',会发生什么?在控制台中看到了什么? – SlashmanX
它看起来像你的代码已经给你的数组你的要求:一个对象数组,每个对象包含一个catText和一个catValue。问题出现在alert语句中:它不像您期望的那样输出数组(正如其他人在回答中指出的那样)。但是,数组本身确实包含正确的内容。 – wintvelt