javascript - 将数字数组与 'array of number arrays' 进行比较以查找匹配项

标签 javascript jquery arrays loops

我正在尝试一些我以前从未尝试过的事情,但我很难找到解决方案(希望我没有尝试不可能的事情!)。

我有一个包含 24 个单独数组的数组,每个数组各包含 4 个数值。

var arrayOfArrays = [
    [ 0, 7, 14, 21 ],
    [ 1, 8, 15, 22 ],
    [ 2, 9, 16, 23 ],
    [ 6, 13, 20, 27 ] and so on for 24 arrays.

我还有一个空数组,在单击事件中将新数字插入其中。每次点击都会添加一个新数字,即

var userGeneratedArray = []
- click
[7]
- click
[7, 32]
-click
[7, 32, 14]
-click
[7, 32, 14, 24]
-click
[7, 32, 14, 24, 34]

等等

我想做的是:

1)每次向 userGenerateArray 添加新数字时,我想循环遍历 arrayOfArrays 并比较数字。

2) 一旦 userGenerateArray 中的任意四个数字与 arrayOfArrays 中任意数组中的所有数字匹配,则返回 true。

知道如何构造这个循环吗?任何帮助将不胜感激:)。

这是我的完整数组

    var arrayOfArrays = [
        [ 0, 7, 14, 21 ],
        [ 1, 8, 15, 22 ],
        [ 2, 9, 16, 23 ],
        [ 6, 13, 20, 27 ],

        [ 7, 14, 21, 28 ],
        [ 8, 15, 22, 29 ],
        [ 12, 19, 26, 33 ],
        [ 14, 21, 28, 35 ],

        [ 18, 25, 32, 39 ],
        [ 19, 26, 33, 40 ],
        [ 20, 27, 34, 41 ],
        [ 36, 31, 26, 21 ],

        [ 37, 32, 27, 22 ],
        [ 38, 33, 28, 23 ],
        [ 30, 25, 20, 15 ],
        [ 31, 26, 21, 16 ],

        [ 32, 27, 22, 17 ],
        [ 24, 19, 13, 9 ],
        [ 25, 20, 15, 10 ],
        [ 26, 21, 16, 11 ],

        [ 18, 13, 8, 3 ],
        [ 19, 14, 9, 4 ],
        [ 20, 15, 10, 5 ],
        [ 13, 20, 27, 34 ]
    ];

最佳答案

您希望用户在输入中输入一些数组并与您给出的数组完全匹配,然后返回匹配的数组。这非常简单,可以分步完成

  1. 首先,将 keyup 添加到您的输入中,当用户键入时,将字符串拆分为数组。在那里你有输入的数组
  2. 然后对 arrayOfArrays 进行 forEach 以获取其中的每个值。
  3. 现在 forEach 遍历 arrayOfArrays 的元素,然后对数组执行 every 循环。检查每个值是否与数组匹配,如果匹配则返回您的答案

var arrayOfArrays = [
  [0, 7, 14, 21],
  [1, 8, 15, 22],
  [2, 9, 16, 23],
  [6, 13, 20, 27],

  [7, 14, 21, 28],
  [8, 15, 22, 29],
  [12, 19, 26, 33],
  [14, 21, 28, 35],

  [18, 25, 32, 39],
  [19, 26, 33, 40],
  [20, 27, 34, 41],
  [36, 31, 26, 21],

  [37, 32, 27, 22],
  [38, 33, 28, 23],
  [30, 25, 20, 15],
  [31, 26, 21, 16],

  [32, 27, 22, 17],
  [24, 19, 13, 9],
  [25, 20, 15, 10],
  [26, 21, 16, 11],

  [18, 13, 8, 3],
  [19, 14, 9, 4],
  [20, 15, 10, 5],
  [13, 20, 27, 34]
];
let answer = []
document.querySelector("#val").onkeyup = function() {
  let array_user = this.value.split(',') // convert input  value to array 
  arrayOfArrays.forEach((array) => { // for every array inside arrayOfArrays
    let trues = array.every((val, index) => { // match every element inside the arrays of the variable arrayOfArrays and then return the condition
      return val == array_user[index]
    })
    if (trues){ // if your answer is correct then say yes
      console.log("ANSWER IS THIS => " +  array)
    }
  })
}
<input id="val">

例如,在输入中键入 13, 20, 27, 34(或数组字典中的任何其他值),这将匹配其中的数组。

关于javascript - 将数字数组与 'array of number arrays' 进行比较以查找匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57241270/

相关文章:

javascript - 我可以在 RegExp 声明中即时执行内联函数吗?

javascript - 使用带有 document.addEventListener 的 JavaScript DOMContentLoaded 时,Firefox 不会报告异常

javascript - 在多次ajax请求后执行一个函数

javascript - Bootstrap 滑动菜单 navbar-right

jquery - 一旦 div 达到一定高度,使用 jQuery 将 div 的高度更改为自动

jquery - js-hotkeys - 如何绑定(bind)到?问号

java - for with if语句java

php - 如何在PHP中按最大相同值对数组进行排序

javascript - 在js中向外界隐藏变量值

Java - 改变指针改变值?