如何从数组中删除数组?
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);
关于从数组中删除元素和数组,有 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);