我试图通过字符串值(例如'n / a'或'not specified')提交表单后替换通过JSON获得的null值。我添加了几行@Winter Solider建议,下面注释以检查空值并替换它,但我添加的代码不起作用。想法?
-thanks
function submitFormFunction() {
//document.getElementById("form").submit();
var valueArray = [
{
'label': 'contractId',
'value': document.getElementById('ContractId').value
},
{
'label': 'title',
'value': document.getElementById('ContractTitle').value
},
{
'label': 'minYear',
'value': document.getElementById('MinYear').value
},
{
'label': 'maxYear',
'value': document.getElementById('MaxYear').value
},
{
'label': 'terminal',
'value': document.getElementById('Terminal').value
},
{
'label': 'location',
'value': document.getElementById('Location').value
},
{
'label': 'theme',
'value': document.getElementById('Theme').value
},
{
'label': 'construction',
'value': document.getElementById('Construction').value
},
{
'label': 'asBuilt',
'value': document.getElementById('AsBuilt').value
}
].map(function (param) { return param.label + '=' + param.value; });
if (valueArray.length) {
// here I am trying to handle the null value issue as suggested by Winter Soldier
for (var i = 0; i < valueArray.length; i++) {
if (valueArray[i].includes("null")) {
valueArray[i] = valueArray[i].replace("null", "n/a");
}
}
console.log(valueArray)
console.log(valueArray.join('&'));
//var queryStr = JSON.stringify(valueArray.replacer);
var queryString = valueArray.join('&');
fetch(searchUrl, '?' + queryString, function (data) {
// output search results to the dom
renderSearchResults(JSON.parse(data), document.getElementById('searchResults'));
});
} else {
document.getElementById('searchResults').innerHTML = "Please enter a search term.";
}
}
答案 0 :(得分:2)
观察:您正在不必要地使用filter
,因为它会在valueArray
数组上创建另一个数组。相反,您可以使用forEach
。和
<强>解决方案:强>
if (valueArray.length) { // It'll do the same job as 'valueArraylength > 0'
// here I am trying to handle the null value issue
valueArray.forEach(function(value){
if (value == null || value == "") {
value = "n/a";
}
})
//var queryStr = JSON.stringify(valueArray.replacer);
var queryString = valueArray.join('&');
fetch(searchUrl, '?' + queryString, function (data) {
// output search results to the dom
renderSearchResults(JSON.parse(data), document.getElementById('searchResults'));
});
}
希望这会有所帮助:)
答案 1 :(得分:1)
请参阅以下代码
var valueArray = [
{
'label': 'contractId',
'value': 'ContractId'
},
{
'label': 'title',
'value': 'ContractTitle'
},
{
'label': 'minYear',
'value': 'MinYear'
},
{
'label': 'maxYear',
'value': 'MaxYear'
},
{
'label': 'terminal',
'value': 'Terminal'
},
{
'label': 'location',
'value': 'Location'
},
{
'label': 'theme',
'value': 'Theme'
},
{
'label': 'construction',
'value': 'Construction'
},
{
'label': 'asBuilt',
'value': null
}
].filter(function (param) { return param.value; })
console.log(valueArray)
console.log(valueArray.length)
编辑:
""
检查
var valueArray = [{
'label': 'contractId',
'value': 'ContractId'
}, {
'label': 'title',
'value': 'ContractTitle'
}, {
'label': 'minYear',
'value': 'MinYear'
}, {
'label': 'maxYear',
'value': 'MaxYear'
}, {
'label': 'terminal',
'value': 'Terminal'
}, {
'label': 'location',
'value': 'Location'
}, {
'label': 'theme',
'value': ''
}, {
'label': 'construction',
'value': 'Construction'
}, {
'label': 'asBuilt',
'value': null
}].map(function(param) {
return param.label + '=' + param.value;
});
if (valueArray.length) {
// here I am trying to handle the null value issue
for (var i = 0; i < valueArray.length; i++) {
if (valueArray[i].includes("null") || !valueArray[i].split("=")[1].length ) {
valueArray[i] = valueArray[i].split("=")[0] + "=n/a";
}
}
console.log(valueArray)
console.log(valueArray.join('&'));
//the rest of your code
}
答案 2 :(得分:0)
它适用于我。也许您还需要检查空字符串?
var valueArray=[5,6,7,8,null,3,4,5,0,0,0,9,''," "]
for (var i = 0; i < valueArray.length; i++) {
if (valueArray[i] === null || valueArray[i] === ' ' || valueArray[i] === '') {
valueArray[i] = 'n/a';
}
console.log(valueArray[i]);
}
答案 3 :(得分:0)
var valueArray = [{
'label': 'contractId',
'value': 'ContractId'
}, {
'label': 'title',
'value': 'ContractTitle'
}, {
'label': 'minYear',
'value': 'MinYear'
}, {
'label': 'maxYear',
'value': 'MaxYear'
}, {
'label': 'terminal',
'value': 'Terminal'
}, {
'label': 'location',
'value': 'Location'
}, {
'label': 'theme',
'value': ''
}, {
'label': 'construction',
'value': 'Construction'
}, {
'label': 'asBuilt',
'value': null
}];
for (var i = 0; i < valueArray.length; i++) {
Object.keys(valueArray[i]).forEach(function (field) {
if(valueArray[i][field] == null){
valueArray[i][field] = "";
}
})
};
console.log(valueArray);