【问题标题】:for every value in array B, want to find the consecutive values in A对于数组 B 中的每个值,想要找到 A 中的连续值
【发布时间】:2015-01-20 17:19:31
【问题描述】:

我正在尝试编写一个小型 JS 程序。对于数组 B 中的每个值,我想找到 A 中与 B 的值相加的连续值。

我正在尝试打印数组 A 中的元素,使其与数组 B 中的连续总和相匹配。

我在this JSFiddle page 上写了代码,但我不确定 B 是否包含 N 个元素...

你能告诉我如何用 jQuery 编写它吗?输出它应该在 myArray 中的元素,使其与 myOtherArray 中的连续总和相匹配 如果包含 N 个元素,myArray[0] + myArray1 将不起作用。

var myArray = [ 2, 3, 4 ];

var myOtherArray = [ 5, 6, 7 ];

for ( var i = 0; i < myOtherArray.length; i++ ) {


    for ( var j = 0; j < myArray.length; j++ ) {


          if ( myOtherArray[i] == myArray[0] +myArray[1] ) {
             console.log (myArray[ i ]);
          }

          else if(myOtherArray[i] == myArray[1] +myArray[2]) {
              console.log (myArray[ i ]);
          }

        else{
            console.log ("no matching");
        }

    }

}

【问题讨论】:

  • 总会有匹配的吗?所有数字都不同吗?
  • 需要用更简洁的术语定义标准。就目前而言,目标是什么还不是很清楚......例如consecutive sum是什么?显示预期结果
  • 请注意,这与 jQuery 无关。如果要标记垃圾邮件,请使用 tag: 'heal the world'
  • 连续求和意味着数组的2+3等于数组2的5
  • @juvian 是的,没有不同...某些场景可能会匹配

标签: javascript arrays function loops


【解决方案1】:

我回答这个问题是在赌一把.. 但我假设你想继续在数组中添加两个彼此相邻的索引,看看它们是否等于你第二个中的任何值数组?

另外,我不知道您为什么要使用嵌套循环。你只需要遍历一个数组,而不是两个。

var myArray = [ 2, 3, 4 ];
var myOtherArray = [ 5, 6, 7 ];
var sum = 0;

for ( var i = 0; i < myArray.length-1; i++ ) {
    sum = myArray[i] +myArray[i+1];
    if (myOtherArray.indexOf[sum] != -1 ) {
        console.log ("matching");
    }
    else {
         console.log ("no matching");
    }
}

结果应该吐出两次“匹配”。

因为 2+3 = 5,存在于第二个数组中。而3+4 = 7,同样存在于第二个数组中。

【讨论】:

  • @sksallai 你能告诉我为什么你要检查条件 -1 if (myOtherArray.indexOf[sum] != -1 )
  • myOtherArray.indexOf[sum] 如果在数组中没有找到结果,则返回 -1。同样在第二个 for 循环中,我做到了 j
  • 如果我想打印匹配的一些,那么我应该改变控制台,像这样登录jsfiddle.net/qm3a1dw4
  • 是的,但是看看我最新的编辑,你需要一个循环,而不是两个。我试图以尽可能少的逻辑更改来更改您的代码。但如果我和你在同一个页面上,那么第二个循环就不需要了。
【解决方案2】:

由于标准没有明确定义,我相信这可能与您正在寻找的相似

var sum = 0;

for (var j = 0; j < myArray.length; j++) {
    sum += myArray[j];
    var isMatch = myOtherArray.indexOf(sum) > -1,
        matchText = isMatch ? ' true' : ' false';
    $('body').append('Match for ' + sum + ' is' + matchText + '<br>')
}

它将数组中的所有元素相加到当前索引,并检查该值是否存在于其他数组中

DEMO

【讨论】:

  • 我不知道。您没有很好地定义标准或提供预期的结果
  • @charlieftl 你能告诉我你为什么要检查条件 -1 if (myOtherArray.indexOf[sum] != -1 )
  • 因为indexOf() 就是这样工作的。不匹配将返回-1
【解决方案3】:

回答我如何理解这个问题:http://jsfiddle.net/qqqs8aLc/1/

var A = [ 5, 6, 7 ];
var B = [ 2, 3, 4 ];

var Alen = A.length;
var Blen = B.length;

for(var i=0; i < Alen; i++){

     for(var j=0; j < Blen; j++){

        if(A[i] == (B[j] + B[j+1])){
            console.log("%d = (%d, %d)",A[i], B[j], B[j+1]);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2016-10-28
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    相关资源
    最近更新 更多