JavaScript 对数组元素进行分类并输出为 HTML

标签 javascript

我们有一个格式为 bugs = ['BD-2', 'SSNC-1', 'SSNC-3', 'RI-2', 'RC-10'] 的数组.

您可以看到它有 4 种不同的错误类型/ token (BD、SSNC、RI 和 RC)——这可能会在未来扩展。 token 和 ID 号分隔符可以是 '-' 或 '/' 或什么都不是(例如:regexp match[-/]?)即数组可以是

= ['BD-2', 'SSNC-1', 'SSNC-3', 'RI-2', 'RC-10'] or
= ['BD-2', 'SSNC/1', 'SSNC-3', 'RI-2', 'RC/10'] or
= ['BD-2', 'SSNC-1', 'SSNC3', 'RI-2', 'RC10']

现在尝试构建一个简单的 JavaScript 函数,该函数可以根据 token 类型将元素分类到单独的数组中,然后输出一个简单的 HTML 表格,并将 bugtoken 类型作为列标题。

对于 bugs = ['BD-2', 'SSNC-1', 'SSNC-3', 'RI-2', 'RC-10'] 数组。`

输出应该是这样的:

 ___________________________________
| BD      SSNC        RI      RC    |
|------+---------+--------+---------+
|BD-2  | SSNC-1, |   RI-2 |  RC-10  |
|      | SSNC-3  |        |         |
|______|_________|________|_________|

最佳答案

我建议使用对象与匹配的标识符进行分组。

var data = ['BD-2', 'SSNC-1', 'SSNC-3', 'RI-2', 'RC-10', 'BD-2', 'SSNC/1', 'SSNC/3', 'RI/1', 'RC/10', 'BD-2', 'SSNC-1', 'SSNC3', 'RI-2', 'RC10'],
    grouped = function (data) {
        var o = {};
        data.forEach(function (a) {
            var group = a.match(/^[a-zA-Z]+/);
            o[group] = o[group] || [];
            o[group].push(a);
        });
        return o;
    }(data);

document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>');

更新,结果具有不同的 token 和 ID。

var data = ['BD-2', 'SSNC-1', 'SSNC-3', 'RI-2', 'RC-10', 'BD-2', 'SSNC/1', 'SSNC/3', 'RI/1', 'RC/10', 'BD-2', 'SSNC-1', 'SSNC3', 'RI-2', 'RC10'],
    grouped = function (data) {
        var o = {}, r = {};
        data.forEach(function (a) {
            var group = a.match(/^[a-zA-Z]+/),
                number = a.match(/\d+$/);
            o[group] = o[group] || {};
            r[group] = r[group] || [];
            if (!(number in o[group])) {
                o[group][number] = r[group].push(a) - 1;
            }
            if (r[group][o[group][number]] !== a) {
                r[group][o[group][number]] = group + '-' + number;
            }
        });
        return r;
    }(data);

document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>');

关于JavaScript 对数组元素进行分类并输出为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35451847/

相关文章:

javascript - 单击提交按钮打开引导成功对话框

javascript - 无法在 Webbrowser #Vb.net 上通过其已知的元素 ID 单击按钮

javascript - 删除或覆盖 .onclick = function(){}

javascript - typescript 中的 Angular2 过滤器

javascript - 如何在 Meteor App 中包含本地 JS 文件?

javascript - Map.forEach 创建的 Promise 在第一次处理拒绝时停止

javascript - 为什么这个文本输入在 iOS 上不起作用?

javascript - 从代码隐藏调用 js 函数不起作用?

javascript - 如何从 javaScript 文件中删除脚本初始化

javascript - 如何在 sails.js 中使用 .less 文件?