Datatables中数组变量的粒度操作

时间:2017-01-22 23:13:11

标签: javascript jquery arrays datatables

您可以在此fiddle中看到,我正在寻找一种解决方案,可让我加入相同数据表列中的几个JSON字段。这是我找到的解决方案:

 function ( data, type, full ) {
      var a = (full["container-title"]);
      var b = (full["volume"]);
      var c = (full["issue"]);
      var d = (full["page"]);
      var x = ([a, b, c, d]);
      return $.map( x, function ( d, i ) {
      return d;}).join( ', ' );
    }

这将输出我想要的值,以逗号分隔。但是,我想在输出之前向每个变量添加一些html。比方说,我想要"音量"之前是" Vol。"。但如果我试试这个

var a = 'Vol.' + (full["volume"]);

该值传递为"未定义"并完全无法使用。还有其他路线吗?

2 个答案:

答案 0 :(得分:2)

您的方法确实有效,请查看此JSFiddle(https://jsfiddle.net/annoyingmouse/0zdjy1yz/6/)。您遇到的是issue无法找到相关数据,因为它不在您的数据中,如果您在将其添加到您笑的阵列之前进行检查:

$('#example').dataTable({
    "ajax": {
        "url": "https://api.myjson.com/bins/vawiz",
        "dataSrc": ""
    },
    "columns": [{
        "data": "",
        "defaultContent": null,
        "render": function(data, type, full) {
            var x = [];
            if (full["container-title"]) {
                x.push("Title: " + full["container-title"]);
            }
            if (full["volume"]) {
                x.push("Volumns: " + full["volume"]);
            }
            if (full["issue"]) {
                x.push("Issue: " + full["issue"]);
            }
            if (full["page"]) {
                x.push("Page: " + full["page"]);
            }
            return $.map(x, function(d, i) {
                return d;
            }).join(', ');
        }
    }, ],
});

此外,您的脚本包含错误的顺序。 :-D

答案 1 :(得分:0)

如果你必须指定你想要的项目

,这会更优雅
function cFL(string) {
  return string.charAt(0).toUpperCase() + string.slice(1);
}


"render": function(data, type, full) {
  var x = [], y=["container-title","volume","issue","page"];
  for (var i=0;i<y.length;i++) { 
    if(full[y]) x.push(cFL(y[i])+": "+full[y]);
  }
  return x.length==0?"":x.join(", ");
}