如何循环比较Javascript中的值的两个数组?

时间:2014-04-09 15:28:49

标签: javascript

我有以下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。

更新

到目前为止,我有几个快速的答案,但没有人检查我上面列出的正确的事情。

3 个答案:

答案 0 :(得分:1)

nullundefined进行比较:

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)