JavaScript哈希值验证
问题描述:
我想给我的散列数组中的4个值相同的行为。JavaScript哈希值验证
例如:
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将具有相同的行为。我想简化验证。
是这样的:。
阵列[键] .config.tmp [TP1,TP2,TP3,TP4]是可能的?已经尝试过。但它是
tp1,tp2,tp3和tp4可能不存在(未定义)。 (有时只有tp1和tp2)。
任何意见,所以我不会重复的代码?
预先感谢
答
更换你的代码中也可以使用的数组键过滤器:
if ((array[key].config.tmp || {}).keys().filter(
function(k) { return /^tp[1234]/.test(k) }
).length))
答
使用短路操作者像||
。例如,如果你正在检查多个属性的存在,访问一个不存在的属性是虚假的。
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 || ....) {
}
,会为我的验证的第一步工作,但我会后,有一个问题。例如: 例如: 如果tp1未定义并且应该存在,则需要属性9999,并且通过验证,我无法识别哪个tp(如果它是tp1或tp2或tp3或tp4) –