如何从分隔字符串创建数组

How do you create an array from a delimited string?

本文关键字:创建 数组 字符串 分隔      更新时间:2023-09-26

我有一个类别列表,在db中存储为分号字符串。

我有一个剑道选择标签,我需要用这些值填充它。

select 标记需要以下形式的数组形式的值:

[{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"}]的数组

当你对一个对象数组运行 alert() 时,它将返回项的类型,而不是字符串化的值。

如果您使用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]