首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数组中找到数字的组合

在数组中找到数字的组合
EN

Stack Overflow用户
提问于 2017-03-20 01:38:27
回答 2查看 73关注 0票数 0

我需要检查一个传入的数字数组是否与一组数字数组的任何变化相匹配。我基本上只是停留在逻辑上。

给定的

代码语言:javascript
复制
var myData = [1, 201, 100]

这三个数字是否按下列预先设定的组合按任何顺序排列?

代码语言:javascript
复制
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/

代码语言:javascript
复制
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);
EN

Stack Overflow用户

回答已采纳

发布于 2017-03-20 02:03:55

下面代码中的findCombo函数使用一种功能方法来解决问题。可以在上阅读更多关于.every().some()方法的内容。

代码语言:javascript
复制
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));
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42894566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档