Получение данных с похожим именем ключа в JavaScript

У меня есть эти данные.

{"channel":
           {
            "id":*******,"name":"INA229 Measurement",
            "description":"Test with INA229",
            "latitude":"0.0",
            "longitude":"0.0",
            "field1":"Voltage",
            "field2":"Current",
            "field3":"Power",
            "field4":"Temperature",
            "created_at":"2022-04-07T08:40:24Z",
            "updated_at":"2022-04-07T08:40:52Z",
            "last_entry_id":3771},
            "feeds":[]
           }

Как взять только значения для ключей поля (x) в новые данные. Ключ имени field(x) (field1, field2, field3 ..... field8) является динамическим и изменяется в диапазоне от ключей поле1 до поле8. Я не знаю, сколько их будет всего, даже при получении данных.

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
3
0
44
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

  • Используя Object#entries, получите пары ключ-значение channel
  • Используя Array#reduce, выполните итерацию по последнему при обновлении результирующего объекта.
  • В каждой итерации используйте String#match для проверки формата ключа.

const data = { "channel": { "id": "", "name": "INA229 Measurement", "description": "Test with INA229", "latitude": "0.0", "longitude": "0.0", "field1": "Voltage", "field2": "Current", "field3": "Power", "field4": "Temperature", "created_at": "2022-04-07T08:40:24Z", "updated_at": "2022-04-07T08:40:52Z", "last_entry_id": 3771 }, "feeds": [] };

const res = Object.entries(data.channel).reduce((acc, [key, value]) => {
  if(key.match(/^field[1-8]$/)) {
    acc[key] = value;
  }
  return acc;
}, {});

console.log(res);

Отличный пример. Спасибо, братан!

YuMERA 10.04.2022 16:12

Пожалуйста, убедитесь, как вы хотите проверить ключ: должен ли он начинаться с field или быть более точным в отношении формата с помощью регулярного выражения.

Majed Badawi 10.04.2022 16:14
Ответ принят как подходящий

Переберите data.channel с for/in, проверьте, начинается ли ключ с ключевого слова, и, если да, добавьте значение этого свойства в новый объект, используя этот ключ.

const data = { "channel": { "id": "", "name": "INA229 Measurement", "description": "Test with INA229", "latitude": "0.0", "longitude": "0.0", "field1": "Voltage", "field2": "Current", "field3": "Power", "field4": "Temperature", "created_at": "2022-04-07T08:40:24Z", "fieldTest": "Test", "updated_at": "2022-04-07T08:40:52Z", "last_entry_id": 3771 }, "feeds": [] };

const out = {};

for (const key in data.channel) {
  if (key.startsWith('field')) {
    out[key] = data.channel[key];
  }
}

console.log(out);

Спасибо. Я использую это решение.

YuMERA 10.04.2022 16:11

Другие вопросы по теме