There are excellent posts about deleting elements and arrays from arrays, but I can't find any that does it for this situation:
How can I remove the array containing UUID
as its first element?
let arr = [
['Log entry ID', '_id'],
['UUID', '_source.uuid'],
['Timestamp', '_source.@timestamp'],
['Description', '_source._desc']
];
CodePudding user response:
You can use Array.filter()
and Array.includes()
together as follows:
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)
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>
CodePudding user response:
If you only want to remove elements whose first item is 'UUID'
, you can set the condition of the filter to whether the first item is not 'UUID'
:
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)
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>
CodePudding user response:
By default, you should be using const
wherever possible, not let
, so filter()
is not an ideal solution.
Using const
, you can still delete the desired array element effectively using the splice()
method.
The splice()
method follows the syntax splice(start, deleteCount, ...items)
where start
is the index to start the splice at, deleteCount
is the number of elements you wish to remove starting at the start
index, and items
is any number of items you wish to inject at that same index
once the deletion has completed.
Deletion is optional and can be subbed for 0
if you do not wish to delete any elements, but for this question, we will be removing 1
element, and we will exclude the items
argument which is also optional, as we do not want to inject any additional elements.
For your task, we first need to find the index of the array element which has a first element equal to UUID
. We can so using the findIndex()
like this:
const index = arr.findIndex(e => e[0] === 'UUID');
Next, we can perform our splice()
using that index
value like this:
arr.splice(index, 1); // 1 for deleting a single array element
We an combine these two steps into one like this:
arr.splice(arr.findIndex(e => e[0] === 'UUID'), 1);
Here it is in action, including the array definition:
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);
<iframe name="sif3" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>
CodePudding user response:
Checking the first element has been well covered by @RameshReddy and @HarunYilmaz.
Another way to check the first element would be:
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);
<iframe name="sif4" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>