要件:
json オブジェクトには、いくつかの null 値または空の文字列が含まれる場合があります。ページを表示するときに、null 値に遭遇すると「N/A」と表示されることが想定されますが、一部の値では null 値が許可されます。したがって、フィルタリングによって null 値を「N/A」に設定することを希望します。たとえば、生徒の「年齢」と「スコア」が空の場合は「N/A」が表示され、「性別」が表示されるようにしたいと考えています。または「コメント」が空の場合は処理されません。
var Student = {
"名前" : "郭",
"性別" : "",
"年齢" : "",
"番号 ": 01,
「スコア」 : [
{
「件名」、
「スコア」 : 50,
"コメント" : ""
},
{
「件名」 : "コンピューター",
"スコア" : "",
"コメント" : "欠席"
}
]
};
var exclude = ["sex", "comment"];
// obj を検証する方法 1
validateObj1 = function(obj,exclude){
var value;
for(var obj のキー){
value = obj[key];
if($.isArray(value)){
obj = validateArray1(obj, key,excluded);
}else if(( $.inArray(key、除外) == -1) && ($.isBlank(value))){
obj[key] = "N/A";
}
}
return obj;
}
validateArray1 = function(obj, key,excluded){
var subValue;
for(var i = 0 、長さ = obj[キー]。長さ;私は<長さ; i ){
for(var subKey in obj[key][i]){
subValue = obj[key][i][subKey];
if(($.inArray(subKey, 除外) == -1) && ($.isBlank(subValue))){
obj[key][i][subKey] = "N/A";
}
}
}
return obj;
}
// obj を検証する方法 2
validateObj2 = function(obj,excluded){
$.each(obj ,function(key, value){
if($.isArray(値)){
obj = validateArray2(obj, キー, 除外);
}else if(isInvalid(キー, 値, 除外)){
obj[key] = "N/A";
}
});
return obj;
}
validateArray2 = function(obj, key,excluded){
for(var i = 0, length = obj[key].length i < length; i ){
$.each(obj[key][i] ,function(subValue){
if(isInvalid(subKey, subValue, )){
obj[key][i][subKey] = "N/A";
}
});
}
return obj;
}
isInvalid = function(key, value,excluded){
return (($.inArray(key,excluded) == -1) && ($.isBlank(value))) ? true : false;
}
$.isBlank = function(obj){
return(!obj || $.trim(obj) === "");
};
方法 1 結果
方法 2 結果