我有(另一个)问题:将数组重新映射到对象中,排除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”缺失。 如何使我的功能正常工作。
谢谢。
答案 0 :(得分:1)
在recom
中更改条件以明确检查零:
所以不要这样:
if (resultset[j])
试试这个:
if (resultset[j] === 0 || resultset[j])