【问题标题】:How to search a subarray of numbers inside an array of numbers如何在数字数组中搜索数字子数组
【发布时间】:2018-10-10 13:07:31
【问题描述】:

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

我有一个数字数组

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

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

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

谢谢!

【问题讨论】:

  • 您是要在该主数组中找到 2,3 的确切 piece,还是我们正在寻找 3,2 或 2,3 之类的任何组合?您采用的字符串方法仅适用于第一种情况。

标签: arrays typescript sub-array


【解决方案1】:

您可以为此使用过滤器

      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);

【讨论】:

    【解决方案2】:

    好吧,它更多的是算法问题,而不是打字稿问题。但是这个解决方案应该适用于检查是否存在与搜索数组匹配的子数组:

    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))));

    【讨论】:

    • 是的,我同意,我的意思是问是否存在工厂函数(es6?)来查找子数组
    • 我不确定您所说的“工厂功能”是什么意思。但据我所知,没有这样的方法可以为你完成这项工作。也许有些图书馆可以做到这一点。
    猜你喜欢
    • 2023-03-13
    • 2016-03-08
    • 1970-01-01
    • 2022-11-01
    • 2017-10-29
    • 2022-01-23
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多