查找二维数组中最长的元素

Find the longest Elements in a 2d array

我目前正在使用 6 行长的二维数组。

现在我需要过滤最长的行以使用它们。但是我不知道如何过滤最短的元素

例如:

0: (3) ['karo11', 'karo6', 'kreuz13']
1: (2) ['pik6', 'pik13']
2: ['karo13']
3: (2) ['herz11', 'kreuz6']
4: ['herz6']
5: (2) ['kreuz11', 'pik11']

这是我的数组。现在我需要过滤掉第 2 行和第 4 行。但是我应该怎么做呢?

注意。数组不是静态的,所以行的长度是可变的,每次我 运行 代码

都会改变

一种方法可能是获取每个数组的长度,找到最小长度,然后过滤长度不等于最小值的数组。

如果您需要过滤掉最大长度,请改用 Math.max()

let arr = [
  ['karo11', 'karo6', 'kreuz13'],
  ['pik6', 'pik13'],
  ['karo13'],
  ['herz11', 'kreuz6'],
  ['herz6'],
  ['kreuz11', 'pik11']
]


let min = Math.min(...arr.map(i => i.length))

let result = arr.filter(i => i.length !== min)

console.log(result)

您可以使用 Math.max()Math.min() 从数组中获取最大和最小长度元素,然后您可以根据需要过滤掉它。

演示:

const inputArr = [
  ['karo11', 'karo6', 'kreuz13'],
  ['pik6', 'pik13'],
  ['karo13'],
  ['herz11', 'kreuz6'],
  ['herz6'],
  ['kreuz11', 'pik11']
];

let shortest = inputArr.filter(i => i.length !== Math.max(...inputArr.map(i => i.length)))

let longest = inputArr.filter(i => i.length !== Math.min(...inputArr.map(i => i.length)))

console.log(shortest)
console.log(longest)