我有以下Javascript函数,其中参数newValue和oldValue是整数数组和相同的长度。这些数组中的任何值都可以是整数,未定义或null:
function (newValue, oldValue) {
});
是否有某种方法可以一次检查一个元素中数组中的值,然后仅在以下情况下执行操作:
newValue[index] is >= 0 and < 999
oldValue[index] is >= 0 and < 999
newValue[index] is not equal to oldValue[index]
我不确定的是我如何处理我的检查并忽略newValue或oldValue不为null且未定义的情况?我知道我可以在if(newValue)中进行检查,但是当它为0时会显示false。
更新
到目前为止,我有几个快速的答案,但没有人检查我上面列出的正确的事情。
答案 0 :(得分:1)
与null
和undefined
进行比较:
if (newValue[index] !== null && typeof newValue[index] !== 'undefined') {}
用于OP更新:
n = newValue[index];
o = oldValue[index];
if (
n !== null && typeof n !== 'undefined' && n >= 0 && n < 999 &&
o !== null && typeof o !== 'undefined' && o >= 0 && o < 999
) {
// your code
}
对于array-elements,不必使用typeof
,因此n !== undefined
是可以的,因为变量将存在。
n = newValue[index];
o = oldValue[index];
if (
n !== null && n !== undefined && n >= 0 && n < 999 &&
o !== null && o !== undefined && o >= 0 && o < 999 &&
n !== o
) {
// your code
}
答案 1 :(得分:0)
这样做:
function isEqual (newValue, oldValue) {
for (var i=0, l=newValue.length; i<l; i++) {
if (newValue[i] == null || newValue[i] < 0 || newValue[i] >= 999
|| oldValue[i] == null || oldValue[i] < 0 || oldValue[i] >= 999)
continue;
if (newVale[i] !== oldValue[i])
return false;
}
return true;
}
答案 2 :(得分:0)
if (newValue != null || newValue != undefined) && (oldValue != null || oldValue != undefined)