Javascript 如何在DataTable单元格中将分号分隔的数据转换为单独的行

Javascript 如何在DataTable单元格中将分号分隔的数据转换为单独的行,javascript,jquery,datatables,Javascript,Jquery,Datatables,我在JSON文档中有一个数组。下面是该数组中的一项: { "generalSolution": "Cloud", "generalOperator": "MTN", "genericCountry": "USA", "vnfProductName": "vEPG;vSAPC;vSGSN-MME", "vnfRelease": "2.4;1.3;v1.2399999", "vnfVendor": "Ericsson;Ericsson;Ericsson

我在JSON文档中有一个数组。下面是该数组中的一项:

{
    "generalSolution": "Cloud",
    "generalOperator": "MTN",
    "genericCountry": "USA",
    "vnfProductName": "vEPG;vSAPC;vSGSN-MME",
    "vnfRelease": "2.4;1.3;v1.2399999",
    "vnfVendor": "Ericsson;Ericsson;Ericsson"
}
我希望将DataTables中的数据显示为一行,如下所示:


请注意,vnf详细信息(
vnfProductName
vnfRelease
vnfvendo
)可以有不同数量的条目。

只需替换

这是一个例子。在这里,原始对象被更改。如果需要,考虑调整id

$(文档).ready(()=>{
常量对象={
“通用解决方案”:“云”,
“通用操作员”:“MTN”,
“一般国家”:“美国”,
“vnfProductName”:“vEPG;vSAPC;vSGSN MME”,
“vnfRelease”:“2.4;1.3;v1.239999”,
“vnfVendor”:“爱立信;爱立信;爱立信”
};
用于(输入obj){
//这里!
obj[key]=obj[key]。替换(/;/g,
); } $('#dt')。数据表({ 数据:[obj], 栏目:[ {data:'generalSolution'}, {data:'generalOperator'}, {数据:'genericCountry'}, {data:'vnfProductName'}, {数据:'vnfRelease'}, {数据:'vnfVendor'} ] }); });

一般解
总操作员
一般国家
vnfProductName
vnfRelease
vnfVendor

只需更换

这是一个例子。在这里,原始对象被更改。如果需要,考虑调整id

$(文档).ready(()=>{
常量对象={
“通用解决方案”:“云”,
“通用操作员”:“MTN”,
“一般国家”:“美国”,
“vnfProductName”:“vEPG;vSAPC;vSGSN MME”,
“vnfRelease”:“2.4;1.3;v1.239999”,
“vnfVendor”:“爱立信;爱立信;爱立信”
};
用于(输入obj){
//这里!
obj[key]=obj[key]。替换(/;/g,
); } $('#dt')。数据表({ 数据:[obj], 栏目:[ {data:'generalSolution'}, {data:'generalOperator'}, {数据:'genericCountry'}, {data:'vnfProductName'}, {数据:'vnfRelease'}, {数据:'vnfVendor'} ] }); });

一般解
总操作员
一般国家
vnfProductName
vnfRelease
vnfVendor
使用选项在渲染时转换数据:

//使用JSON摘录作为数据源
变量srcData=[{
“通用解决方案”:“云”,
“通用操作员”:“MTN”,
“一般国家”:“美国”,
“vnfProductName”:“vEPG;vSAPC;vSGSN MME”,
“vnfRelease”:“2.4;1.3;v1.239999”,
“vnfVendor”:“爱立信;爱立信;爱立信”
}];
//初始化数据表
const dataTables=$(“#mytable”).DataTable({
数据:srcData,
dom:‘t’,
//映射所有属性键(假设所有数组项的属性集是统一的)
//进入数组,应为“列”选项:[{title:…,data:…}…]
列:Object.keys(srcData[0]).map(propertyKey=>({title:propertyKey,data:propertyKey})),
//另外使用“columnDefs”选项将“render”回调应用于某些列
columnDefs:[{
目标:[3,4,5],
//用新行标记“
` 呈现:(数据,类型,行,元)=>数据?数据。替换(/;/g,
):“” }] });

使用选项在渲染时转换数据:

//使用JSON摘录作为数据源
变量srcData=[{
“通用解决方案”:“云”,
“通用操作员”:“MTN”,
“一般国家”:“美国”,
“vnfProductName”:“vEPG;vSAPC;vSGSN MME”,
“vnfRelease”:“2.4;1.3;v1.239999”,
“vnfVendor”:“爱立信;爱立信;爱立信”
}];
//初始化数据表
const dataTables=$(“#mytable”).DataTable({
数据:srcData,
dom:‘t’,
//映射所有属性键(假设所有数组项的属性集是统一的)
//进入数组,应为“列”选项:[{title:…,data:…}…]
列:Object.keys(srcData[0]).map(propertyKey=>({title:propertyKey,data:propertyKey})),
//另外使用“columnDefs”选项将“render”回调应用于某些列
columnDefs:[{
目标:[3,4,5],
//用新行标记“
` 呈现:(数据,类型,行,元)=>数据?数据。替换(/;/g,
):“” }] });


For jquery是非常好的datatable插件:但是这个表视图也很简单,每个数据0.6个。@Zydnar:谢谢你的主意。但是我不想以这种方式显示,因为以后我必须将datatable转换为excel,因为它将提供problem@srilakshmi:据我所知,Excel和HTML都无法将公共分隔符理解为“新行”,因此可以将分号放回原处导出到Excel中,使用API方法的
format.body
选项。For jquery是非常好的datatable插件:但是这个表视图也很简单,每个数据0.6个。@Zydnar:谢谢你的想法。但是我不想以这种方式显示,因为以后我必须将datatable转换为excel,因为它将提供problem@srilakshmi:据我所知,Excel和HTML都没有理解为“新行”的通用分隔符,因此可以使用API方法的
format.body
选项将分号返回到Excel中。谢谢..这很有帮助..同时我可以这样做。{“数据”:“vnfVendor”,呈现:(数据,类型,行,元)=>data.replace(/;/g,
')},{“数据”:“vnfProductName”,呈现:(数据,类型,行,元)=>data.replace(/;/g,
')},{“数据”:“vnfRelease”,render:(数据、类型、行、元)=>data.replace(/;/g,
)},是的,您可以,但是您需要这样做,而不是使用一个通用的呈现函数吗