[英]javascript hash values validation
我試圖給我的哈希數組中的4個值相同的行為。
例如:
var array = {};
if (array[key].config.tmp == undefined) {
array[key].config.tmp = {}
}
if(array[key].config.tmp.tp1){
}
if(array[key].config.tmp.tp2){
}
if(array[key].config.tmp.tp3){
}
if(array[key].config.tmp.tp4){
}
由於tp1,tp2,tp3和tp4具有相同的行為。 我想簡化驗證。
就像是:
array [key] .config.tmp。[tp1,tp2,tp3,tp4]可以嗎? 已經嘗試過。 但這是
tp1,tp2,tp3和tp4可能不存在(未定義)。 (有時只有tp1和tp2)。
有什么建議可以避免重復代碼嗎?
提前致謝
使用||
類的短路運算符 。 例如,如果您要檢查是否存在多個屬性,則訪問不存在的屬性是錯誤的。
var c = a[key].config.tmp.a || a[key].config.tmp.b || .... || //default
在此示例中,c將保留其中第一個的值以求值為true。 如果它們都返回false,則還可以在最后添加一個“默認”值。 請記住,訪問不存在的屬性的屬性是類型錯誤,因此,必須確保至少存在config.tmp。 因此,您可以將代碼替換為
if (a[key].config.tmp.a || a[key].config.tmp.b || ....) {
}
您還可以在數組鍵上使用過濾器:
if ( ( array[key].config.tmp || {} ).keys().filter(
function(k) { return /^tp[1234]/.test( k ) }
).length ) )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.