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

问题描述

这是来自 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()不是一个好的选择,因为有时对象可能不一样,例如,可能没有TEMPERATUREor PRESSURE。我希望我说清楚了。如果您询问,此数据将在 CLI 应用程序中显示给用户;)

标签: javascriptnode.jsjsonfilter

解决方案


您可以使用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)));


推荐阅读