Tweak需要在Javascript数组或对象中存储多个数据

时间:2012-07-27 05:28:46

标签: javascript arrays object

我有一个字符串

var str = 'Supplier Name^supplier^left^string*Spend (USD MM)^spend^right^number^5';

我在javascript中编写一个函数来从上面的字符串中检索数据字段名称并将其存储在数组中:

        function getColNamesfromConfig(str) {
        var cols = new Array();
        for (i = 0; i <= str.split('*').length - 1; i++) {
            cols[i] = str.split('*')[i].split('^')[1];
            //Will write logic to retrieve the Supplier Name, Spend (USD MM) fields etc
        }
        return cols;
    }

我得到的结果如下: cols [0] =供应商; cols [1] =花费;依此类推..(这是数据域)

然后我创建一个动态表并使用上面检索的信息:

"onResultHttpService": function (result, properties) {

            var json_str = Sys.Serialization.JavaScriptSerializer.deserialize(result);


            var colNames = getColNamesfromConfig(properties.PodAttributes.DGConfig);
            var htmlMarkup = '';


            htmlMarkup = "";                
            htmlMarkup = htmlMarkup + "<table width='100%' border='1' cellspacing='0' cellpadding='0' class='gridView gridMouseOverEffect'>";
            htmlMarkup = htmlMarkup + "<tr>";

            for (var c = 0, colLen = colNames.length; c < colLen; c++) {
             //COLUMN LOOP (here i want to bind 'Supplier Name' and not 'supplier' which is what i get from getColNamesfromConfig(str);
                htmlMarkup = htmlMarkup + "<th align='left' class='secondaryLink tableContentRow'> <h5>" + colNames[c] + "</h5>";
                htmlMarkup = htmlMarkup + "</th>";
            }
            htmlMarkup = htmlMarkup + "</tr>";

            for (var i = 0, rowlen = json_str.length; i < rowlen; i++) {
                htmlMarkup = htmlMarkup + " <tr>"

                for (var c = 0, colLen = colNames.length; c < colLen; c++) {
                    htmlMarkup = htmlMarkup + " <td align='left' class='secondaryLink tableContentRow'>   " + json_str[i][colNames[c]];
                    htmlMarkup = htmlMarkup + "</td>"
                }
                htmlMarkup = htmlMarkup + "</tr>"
            }
            htmlMarkup = htmlMarkup + "</table>"
            divPortletId = '#' + properties.id;
            $(htmlMarkup).appendTo($(divPortletId));

        }

如果我必须从示例字符串中检索显示名称,我将如何将其存储在同一个数组中并访问它?例如:我想要一些我可以循环获取我的显示名称(供应商名称)以及数据域名称(供应商)的东西。我只想在我的COLUMN LOOP中绑定显示名称,它当前绑定列数据字段。因此,请帮助我TWEAK我的getColNamesfromConfig(str)函数返回数据字段以及数组中的displayname或对象文字,如果可能的话......我需要像

这样的东西
cols[0].DisplayName = "Supplier Name";
cols[0].DatafieldName = "supplier";
cols[1].DisplayName = "Spend (USD MM)";
cols[1].DatafieldName = "spend";

1 个答案:

答案 0 :(得分:1)

function getColNamesfromConfig(str) {
    var cols = new Array();
    for (i = 0; i <= str.split('*').length - 1; i++) { 
        cols[i] = {}
        cols[i].DatafieldName = str.split('*')[i].split('^')[1]; 
        cols[i].DisplayField = str.split('*')[i].split('^')[0];
    }
    return cols;
}

应该做的伎俩

相关问题