如何在数字数组中搜索数字子数组

时间:2018-10-10 13:07:32

标签: arrays typescript sub-array

我的问题是TypeScript中的这个问题(现在最新是v3.1)

我有一个数字数组

let mainArray : Array<number>  = [1,2,3,4];

我必须找到[2,3]的子数组,我该怎么办?

我的实际解决方法是将两个数组都转换为字符串(toString())并使用.includes(ES6)函数,它可以工作,但我认为这不是最佳解决方案。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以为此使用过滤器

      let mainArray : Array<number>  = [1,2,3,4];
      var findArry = [2, 3];
      var subArray =   mainArray.filter(function(val) {
            return findArry.indexOf(val) != -1 ? true : false;
        });
    console.log(subArray);

答案 1 :(得分:0)

那么它的更多算法问题就是打字稿问题。但是此解决方案应该可以用于检查是否存在与搜索数组匹配的子数组:

const toTuples = (n) => (item, index, originalArr) => {
	const arr = [];
  for(let i = 0; i < n; i++) {
  	arr.push(originalArr[index + i]);
  }
  return arr;
}

const arr = [1,2,3,4,2,3];

const search = [2, 3];

const mapped = arr.map(toTuples(search.length));

console.log(mapped.some((currArray) => currArray.every((item) => search.includes(item))));