Как показать конкретные данные JSON с помощью фильтра или другого метода JS (по атрибуту) - PullRequest
0 голосов
/ 05 ноября 2018

Вот мой JSON из запроса API:

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

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Вы можете использовать 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);
0 голосов
/ 05 ноября 2018

Вы можете использовать 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)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...