【问题标题】:Map and filter an array JavaScript映射和过滤数组 JavaScript
【发布时间】:2019-03-16 18:28:04
【问题描述】:

我正在尝试映射一个嵌套数组并返回超过 6 个字母的单词,我已经被这个问题困扰了一段时间,所以我想得到一些帮助

const array = [["hellow",'pastas'],["travel", "militarie"],["oranges","mint"]]

  const arrayOne = array.map(new => new).filter(arr =>arr.length > 6)

【问题讨论】:

  • 1) new 是保留关键字 2) 请用单引号 (') 或双引号 (") 发布代码,而不是 3) 预期输出是什么?
  • 你为什么要坚持使用.map().filter()?似乎不是这项工作的合适工具。
  • 使用map()/filter()/reduce() 会更有意义。 array.map(a => a.filter(s => s.length > 6)).reduce((acc, a) => acc.concat(a), [])

标签: javascript arrays dictionary multidimensional-array filter


【解决方案1】:

你可以先flat数组然后再filter出长度大于6的单词

const array = [['hellow','pastas'],['travel', 'militaries'],['oranges','mint']]

const arrayOne = array.flat(1).filter(e=> e.length > 6 )

console.log(arrayOne)

【讨论】:

  • 我需要使用地图而不是平面
  • @Prisme 但为什么呢?在这种情况下map 不适合
【解决方案2】:

您可以使用下面的代码。此代码使用.map().filter() 来检查长度是否大于6,如果是则将其添加到数组中。

const array = [["hellow","pastas"],["travel", "militarie"],["oranges","mint"]];
const arrayOne = array.map(e1 => e1.filter(e2 => e2.length > 6)).flat();

console.log(arrayOne);

【讨论】:

    【解决方案3】:

    我认为 filter() 方法会更好。

    array.filter(function (c) {
        return c.length < 6;
    });
    

    但首先使用 flat() 方法。

    【讨论】:

      【解决方案4】:

      有很多方法可以做到这一点。

      您可以使用flatMapfilter

      const array = [['hellow','pastas'],['travel', 'militarie'],['oranges','mint']];
      
      const result = array.flatMap(x => x.filter(y => y.length > 6));
      
      console.log(result);

      另一种方法是使用reducefilter

      const array = [['hellow','pastas'],['travel', 'militarie'],['oranges','mint']];
      
      const result = array.reduce((acc, x) => [...acc, ...x.filter(y => y.length > 6)], []);
      
      console.log(result);

      【讨论】:

        猜你喜欢
        • 2020-11-23
        • 2022-01-02
        • 2022-01-13
        • 2016-03-27
        • 2022-01-14
        • 1970-01-01
        • 2021-03-15
        • 1970-01-01
        相关资源
        最近更新 更多