我正在尝试一些我以前从未尝试过的事情,但我很难找到解决方案(希望我没有尝试不可能的事情!)。
我有一个包含 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 ]
];
最佳答案
您希望用户在输入中输入一些数组并与您给出的数组完全匹配,然后返回匹配的数组。这非常简单,可以分步完成
- 首先,将
keyup
添加到您的输入中,当用户键入时,将字符串拆分为数组。在那里你有输入的数组 - 然后对
arrayOfArrays
进行forEach
以获取其中的每个值。 - 现在
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/