如何从数组中删除数组?

How to delete array from array?

关于从数组中删除元素和数组,有 excellent posts,但我找不到适合这种情况的方法:

如何删除第一个元素为 UUID 的数组?

let arr = [
  ['Log entry ID', '_id'],
  ['UUID', '_source.uuid'],
  ['Timestamp', '_source.@timestamp'],
  ['Description', '_source._desc']
];

您可以按如下方式一起使用 Array.filter()Array.includes()

let arr = [
  ['Log entry ID', '_id'],
  ['UUID', '_source.uuid'],
  ['Timestamp', '_source.@timestamp'],
  ['Description', '_source._desc']
];

arr = arr.filter(subarr => !subarr.includes('UUID'));
// Or you can use subarr[0] !== 'UUID' if you want to check only first element

console.log(arr)

如果只想去掉第一项'UUID'的元素,可以设置过滤条件为第一项是否为[=11] =]:

let arr = [
  ['Log entry ID', '_id'],
  ['UUID', '_source.uuid'],
  ['Timestamp', '_source.@timestamp'],
  ['Description', '_source._desc']
];

const res = arr.filter(e => e[0]!='UUID')

console.log(res)

@RameshReddy 和@HarunYilmaz 已经很好地介绍了检查第一个元素。

检查第一个元素的另一种方法是:

arr = arr.filter(([first]) => first !== 'UUID');

let arr = [
  ['Log entry ID', '_id'],
  ['UUID', '_source.uuid'],
  ['Timestamp', '_source.@timestamp'],
  ['Description', '_source._desc']
];

arr = arr.filter(([first]) => first !== 'UUID');

console.log(arr);

默认情况下,您应该尽可能使用 const,而不是 let,因此 filter() 不是理想的解决方案。

使用const,您仍然可以使用splice()方法有效地删除所需的数组元素。

splice() 方法遵循语法 splice(start, deleteCount, ...items),其中 start 是开始拼接的索引,deleteCount 是您希望从开始删除的元素数在 start 索引处,items 是删除完成后您希望在同一 index 处注入的任意数量的项目。

删除是可选的,如果您不想删除任何元素,可以替代 0,但是对于这个问题,我们将删除 1 元素,并且我们将排除 items 参数也是可选的,因为我们不想注入任何额外的元素。

对于您的任务,我们首先需要找到第一个元素等于 UUID 的数组元素的索引。我们可以这样使用 findIndex()

const index = arr.findIndex(e => e[0] === 'UUID');

接下来,我们可以使用 index 值执行我们的 splice(),如下所示:

arr.splice(index, 1); // 1 for deleting a single array element

我们将这两个步骤合二为一:

arr.splice(arr.findIndex(e => e[0] === 'UUID'), 1);

这是实际操作,包括数组定义:

const arr = [
  ['Log entry ID', '_id'],
  ['UUID', '_source.uuid'],
  ['Timestamp', '_source.@timestamp'],
  ['Description', '_source._desc']
];

arr.splice(arr.findIndex(e => e[0] === 'UUID'), 1);

console.log(arr);