我需要检查一个传入的数字数组是否与一组数字数组的任何变化相匹配。我基本上只是停留在逻辑上。
给定的
var myData = [1, 201, 100]这三个数字是否按下列预先设定的组合按任何顺序排列?
var combo1 = [1, 100, 200]
var combo2 = [1, 101, 201]
var combo3 = [1, 100, 201]
var combo4 = [1, 101, 200];到目前为止,我的尝试没有任何进展,所以我将其简化为这个https://jsfiddle.net/0mvk9dj4/1/
var myData = [1, 201, 100];
var combo1 = [1, 100, 200]
var combo2 = [1, 101, 201]
var combo3 = [1, 100, 201]
var combo4 = [1, 101, 200];
var combos = [combo1, combo2, combo3, combo4];
function findCombo(data) {
var found = false
for (var i = 0; i < combos.length; i++) {
var combo = combos[i];
for (var x = 0; x < combo.length; x++) {
for (var y = 0; y < data.length; y++) {
if (data[y] === combo[x]) {
found = true;
break;
} else {
found = false;
}
}
}
}
console.log("Found? " + found)
return found;
}
findCombo(myData);发布于 2017-03-20 02:03:55
下面代码中的findCombo函数使用一种功能方法来解决问题。可以在上阅读更多关于.every()和.some()方法的内容。
var myData = [1, 201, 100];
var combo1 = [1, 100, 200];
var combo2 = [1, 101, 201];
var combo3 = [1, 100, 201];
var combo4 = [1, 101, 200];
var combos = [combo1, combo2, combo3, combo4];
function findCombo(data, combos) {
return combos.some(function(combo) {
return combo.every((item) => data.includes(item));
});
}
console.log(findCombo(myData, combos));https://stackoverflow.com/questions/42894566
复制相似问题