在jQuery中合并ifs

时间:2017-01-21 17:34:57

标签: jquery datatables

您好我正在研究Datatables,我只是一个jQuery初学者。我想通过DT呈现属性合并一些JSON输出。我试过这个:

 function ( data, type, full ) {
 return full["a"] + full["b"] + full["c"] + full["d"];}

但这不起作用,因为当数据行中没有C或D时,将出现“未定义”。所以我转向在发布结果之前检查的条件。

function ( data, type, full ) {
      if (full["a"]) {
        return full["a"];}
      else if (full["a"] && full["b"]) {
        return full["a"] + full["b"];}

然后我会经历一些迭代,直到我得到我需要的所有变量 - A,B,C和D.另外,这不起作用。有什么捷径吗?

更新:我现在正在使用map函数,这种函数给了我正在寻找的结果,但我仍然在寻找对变量的细粒度控制。请参阅fiddle

更新2 :有关同一问题的另一次迭代,请参阅here

2 个答案:

答案 0 :(得分:0)

以下是如何循环对象

var res = [];
for (var o in full) res.push(full[o]);
return res.length==0?"":res.join(",");

var full = {"a":"A","c":"C","d":"D"}, res = [];
for (var o in full) res.push(full[o]);
console.log(res.length==0?"":res.join(","));

如果不需要逗号,则替代

return (full["a"] || "") +  
       (full["b"] || "") + 
       (full["c"] || "") + 
       (full["d"] || "");

jQuery示例:

var full = {
    "type": "book",
    "title": "Title",
    "container-title": "", // empty
    "publisher": "Publisher",
    "page": "Pages X to X",
    "volume": "XXX"
  },
  res = [];
$.each(full, function(key, val) {
  if ($.trim(val) != "") res.push(val);
});
console.log(res.length == 0 ? "" : res.join(","));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 1 :(得分:0)

as full是一个数组,那么你可以使用$ .each并仅在当前元素没有坏数据时将结果添加到变量(undefined,null)