Reputation: 446
Here is my JSON from an API request:
[ { name: 'PM1', value: 21.51, key: 'PM1' },
{ name: 'PM25', value: 35.08, key: 'PM25' },
{ name: 'PM10', value: 54.85, key: 'PM10' },
{ name: 'PRESSURE', value: 1021.45, key: 'PRESSURE' },
{ name: 'HUMIDITY', value: 97, key: 'HUMIDITY' },
{ name: 'TEMPERATURE', value: 10.4, key: 'TEMPERATURE' } ]
I want to remove the last 3 objects (TEMPERATURE
, PRESSURE
and HUMIDITY
), so it would look like this:
[ { name: 'PM1', value: 21.51, key: 'PM1' },
{ name: 'PM25', value: 35.08, key: 'PM25' },
{ name: 'PM10', value: 54.85, key: 'PM10' } ]
The question is - what should I do? Using slice()
is not a good option since sometimes objects might not be the same, for example, there might be no TEMPERATURE
or PRESSURE
. I hope I made myself clear. In case you asked, this data is going to be displayed to the user in a CLI app ;)
Upvotes: 2
Views: 57
Reputation: 12129
You can use filter
and check the index. The snippet below will remove the last three items, as I believe this is what you want.
const data = [
{ name: 'PM1', value: 21.51, key: 'PM1' },
{ name: 'PM25', value: 35.08, key: 'PM25' },
{ name: 'PM10', value: 54.85, key: 'PM10' },
{ name: 'PRESSURE', value: 1021.45, key: 'PRESSURE' },
{ name: 'HUMIDITY', value: 97, key: 'HUMIDITY' },
{ name: 'TEMPERATURE', value: 10.4, key: 'TEMPERATURE' }
]
const newData = data.filter((item, index) => {
if(index < data.length - 3) {
return item;
}
})
console.log(newData);
If you want to always keep PM1
, PM25
and PM10
use the following:
const data = [
{ name: 'PM1', value: 21.51, key: 'PM1' },
{ name: 'PM25', value: 35.08, key: 'PM25' },
{ name: 'PM10', value: 54.85, key: 'PM10' },
{ name: 'PRESSURE', value: 1021.45, key: 'PRESSURE' },
{ name: 'HUMIDITY', value: 97, key: 'HUMIDITY' },
{ name: 'TEMPERATURE', value: 10.4, key: 'TEMPERATURE' }
]
newData = data.filter(item => (
item.name == 'PM1' || item.name =='PM25' || item.name == 'PM10'
));
console.log(newData);
Upvotes: 2
Reputation: 12990
You can use filter
to exclude items whose names are not in ['TEMPERATURE', 'HUMIDITY', 'PRESSURE']
:
var data = [{ name: 'PM1', value: 21.51, key: 'PM1' },
{ name: 'PM25', value: 35.08, key: 'PM25' },
{ name: 'PM10', value: 54.85, key: 'PM10' },
{ name: 'PRESSURE', value: 1021.45, key: 'PRESSURE' },
{ name: 'HUMIDITY', value: 97, key: 'HUMIDITY' },
{ name: 'TEMPERATURE', value: 10.4, key: 'TEMPERATURE' }];
console.log(data.filter(d => !['TEMPERATURE', 'HUMIDITY', 'PRESSURE'].includes(d.name)));
Upvotes: 2