在另一个数组中搜索一个数组的元素

时间:2020-04-09 14:51:49

标签: javascript arrays reactjs

我有两个数组:linesToWin和mosseX:[]。 mosseX的可能配置为:mosseX [1,3,4,7]。 我想控制mosseX中是否存在三个等于linesToWin数组的数字,并通过搜索返回true或false dipending。有人可以帮助我吗?

calculateWinner = () => {
  const linesToWin = [
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 8],
    [0, 3, 6],
    [1, 4, 7],
    [2, 5, 8],
    [0, 4, 8],
    [2, 4, 6],
  ];

  let result = false;
  for (let i = 0; i < linesToWin.length; i++) {
    result = this.state.mosseX.filter((mossa) =>
      mossa.includes(linesToWin[i].map((u) => u))
    );
    if (result === true) return result;
  }
  return result;
};

1 个答案:

答案 0 :(得分:0)

您可以简单地联系数组并进行比较。

示例:

calculateWinner = () => {
  const linesToWin = [
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 8],
    [0, 3, 6],
    [1, 4, 7],
    [2, 5, 8],
    [0, 4, 8],
    [2, 4, 6],
  ];
  function merge(data = []) {
    return data.join("-");
  }
  const mosseX = merge(this.state.mosseX);
  return linesToWin.some((line) => merge(line) === mosseX);
};

用于测试:

calculateWinner = (mosseX) => {
  const linesToWin = [
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 8],
    [0, 3, 6],
    [1, 4, 7],
    [2, 5, 8],
    [0, 4, 8],
    [2, 4, 6],
  ];
  function merge(data = []) {
    return data.join("-");
  }
  // For testing
  // const mosseX = merge(this.state.mosseX);
  mosseX = merge(mosseX);
  return linesToWin.some((line) => merge(line) === mosseX);
};
console.log(calculateWinner([6,7,1]))
console.log(calculateWinner([6,7,8]))
console.log(calculateWinner([1,7,8]))