Datatables中数组变量的粒度操作

您可以在这个小提琴中看到我正在寻找一种解决方案,可以让我在同一个 Datatables列中加入几个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"]);

该值作为“未定义”传递并完全不可用。 还有其他路线吗?

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

 $('#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(', '); } }, ], }); 

此外,您的脚本包含错误的顺序。 😀

如果您必须指定所需的项目,这将更加优雅

 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