如何使用过滤器或其他JS方法显示特定的JSON数据(按属性)

时间:2018-11-05 16:19:29

标签: javascript node.js json filter

这是来自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个对象(TEMPERATUREPRESSUREHUMIDITY),因此看起来像这样:

[ { name: 'PM1', value: 21.51, key: 'PM1' },
{ name: 'PM25', value: 35.08, key: 'PM25' },
{ name: 'PM10', value: 54.85, key: 'PM10' } ]

问题是-我该怎么办?使用slice()并不是一个好的选择,因为有时对象可能不相同,例如,可能没有TEMPERATUREPRESSURE。我希望我能说清楚。如果您询问,该数据将在CLI应用程序中显示给用户;)

2 个答案:

答案 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);

如果您想始终保留PM1PM25PM10,请使用以下命令:

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);