Javascript将数组重新映射到对象中,排除0(零)值

时间:2014-07-24 20:20:11

标签: javascript arrays

我有(另一个)问题:将数组重新映射到对象中,排除0(零)值。为什么以及如何使不忽略这个值?我需要这个0(零)值。 :)

我的阵列:

var data = {
"queryInfo": {
    "totalRows": "18"
},
    "resultset": [
    ["A", "MAXI", "ACC - GC", "SER", 5646.5],
    ["A", "MAXI", "ACC - SACC", "KIT", 2474.93],
    ["A", "MAXI", "ACC - SACC", "NET", 5418.72],
    ["A+", "MAXI", "ACC - DIV", "FORM", 1531.04],
    ["A+", "MAXI", "ACC - DIV", "FOR", 1147.5],
    ["A+", "MAXI", "ACC - DIV", "HI TECH", 0],
    ["A+", "MAXI", "ACC - GC", "TEM", 435],
    ["A+", "MAXI", "ACC - LPI", "ALYS", 651],
    ["A+", "MAXI", "ACC - LPI", "FIR", 0],
    ["A+", "MAXI", "SCC", "DRUM", 3693.36],
    ["A+", "MAXI", "SCC", "HEL", 0],
    ["A+", "MAXI", "SCC", "LOT", 873],
    ["B", "MAXI", "SCC", "PUR", 9356],
    ["B", "MAXI", "SCC", "SQU", 48474.06],
    ["B", "MAXI", "#null", "HA", 1711],
    ["B", "MAXI", "#null", "#null", 1197.6],
    ["#null", "MAXI", "#null", "#null", 2940],
    ["#null", "#null", "#null", "#null", 2372]
],
    "metadata": [{
    "colIndex": 0,
        "colType": "String",
        "colName": "CP"
}, {
    "colIndex": 1,
        "colType": "String",
        "colName": "ST"
}, {
    "colIndex": 2,
        "colType": "String",
        "colName": "GR"
}, {
    "colIndex": 3,
        "colType": "String",
        "colName": "PR"
}, {
    "colIndex": 4,
        "colType": "Numeric",
        "colName": "VALUE"
}]
};

和我的职能:

function recom(resultset) {
  var obj = {};
  for (var j = 0; j < resultset.length; j++) {
    if (resultset[j]) {
        obj[data.metadata[j].colName] = resultset[j];
    }
  }
  return obj;
}
var arr = [];
for (var i = 0; i < data.resultset.length; i++) {
  if (data.resultset[i] !== null) {
    arr.push(recom(data.resultset[i]));
  }
}

此函数获取每个元数据,并在下一个最终数组中作为键添加。 正如您在此fiddle中看到的,结果必须采用以下形式: {“CP”:“A +”,“ST”:“MAXI”,“GR”:“SCC”,“PR”:“DRUM”,“VALUE”:3693.36} ,但是当索引时data.resultset中的4个为0(零)我的函数在该级别没有返回任何内容: 的 { “CP”: “A +”, “ST”: “MAXI”, “GR”: “SCC”, “PR”: “HEL”}

正确的结果是: 的 { “CP”: “A +”, “ST”: “MAXI”, “GR”: “SCC”, “PR”: “HEL”, “VALUE”:0}

由于结果表中的0值,索引“VALUE”缺失。 如何使我的功能正常工作。

谢谢。

1 个答案:

答案 0 :(得分:1)

recom中更改条件以明确检查零:

所以不要这样:

if (resultset[j])

试试这个:

if (resultset[j] === 0 || resultset[j])