如何比较2个特定的数组值与序列匹配

时间:2018-05-28 04:46:09

标签: javascript arrays

如果2个数组的值与特定序列匹配,我想比较2个数组。

例如:

x1=0 v1=3 x2=4 v2=2 
k1=[3,6,9,12,15,18] k2=[6,8,10,12,14,16] 

将返回Yes,因为12与数组3匹配。

x1=0 v1=2 x2=5 v2=3 
k1=[2,4,6,8,10,12,14] k2=[5,8,11,14,17,20,23] 

将返回No,因为尽管14匹配但在特定数组序列上不匹配。

function car(x1, v1, x2, v2) {
    let k1 = [];
    let k2 = [];
    for (var i = x1; i <= 10000; i+=v1) {
        k1.push(i) 
    }
    for (var i = x2; i <= 10000; i+=v2) {
        k2.push(i)
    }
    for (var i = 0; i <= 10000; i++) {
        if (k1[i] === k2[i]) {
            return 'YES'
            break;
        }
        else {console.log('NO')}
    }
}

1 个答案:

答案 0 :(得分:0)

@okky,尝试以下解决方案,

问题在于你的循环概念。当您通过1000值时,元素的数量与您的值匹配的数量不同。我!K!有10个值,K2有7然后绝对值与未定义的原因和问题匹配。 此外,如果值不匹配,那么在else部分console.log中总是返回no,这样在控制台中显示no时输出值与不匹配的时间。但是在这里他只想显示一个时间值,所以我们必须在全局变量中赋值。如果任何案例匹配中断循环并将全局变量值指定为&#39; YES&#39;否则考虑默认值,这里没有。

&#13;
&#13;
var x1=0, v1=2, x2=5, v2=3, 
k1=[3,6,9,12,15,18], k2=[6,8,10,12,14,16] ;
function car(x1, v1, x2, v2) {
    let k1 = [];
    let k2 = [];
    for (var i = x1; i <= 1000; i+=v1) {
        k1.push(i) 
    }
    for (var i = x2; i <= 1000; i+=v2) {
        k2.push(i)
    }
    var totCnt = 0;
    if(k1.length > k2.length)
    {
    totCnt= k2.length;
    }
    else{
      totCnt= k1.length;
    }
    var RetVal = "No";
    for (var i = 0; i < totCnt; i++) {
        if (k1[i] === k2[i]) {
            RetVal ='YES'
            break;
        }
    }
     console.log(RetVal);
}
car(x1, v1, x2, v2);
&#13;
&#13;
&#13;