这是来自API请求的JSON:
[ { 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' } ]
我想删除最后3个对象(TEMPERATURE
,PRESSURE
和HUMIDITY
),因此看起来像这样:
[ { name: 'PM1', value: 21.51, key: 'PM1' },
{ name: 'PM25', value: 35.08, key: 'PM25' },
{ name: 'PM10', value: 54.85, key: 'PM10' } ]
问题是-我该怎么办?使用slice()
并不是一个好的选择,因为有时对象可能不相同,例如,可能没有TEMPERATURE
或PRESSURE
。我希望我能说清楚。如果您询问,该数据将在CLI应用程序中显示给用户;)
答案 0 :(得分:2)
您可以使用filter
来排除名称不在['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)));
答案 1 :(得分:2)
您可以使用filter
并检查索引。我相信这就是您想要的,下面的代码片段将删除最后三个项目。
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);
如果您想始终保留PM1
,PM25
和PM10
,请使用以下命令:
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);