Лучший способ поиска марша в массиве объектов JavaScript?

Я столкнулся с проблемой сопоставления значений в массиве объектов JS. Позволь мне привести пример,

var dynamicObjectArray = [
{Id: 1422859025, FromTime: "2023-02-12T19:00:00Z", ToTime: "2023-02-12T20:00:00Z"},
{Id: 1422859027, FromTime: "2023-02-12T18:00:00Z", ToTime: "2023-02-12T19:00:00Z"}
] 

Мне нужно найти все идентификаторы для FromTime или ToTime, соответствующие "2023-02-12T19:00:00Z"

Используя базу данных, это можно сделать легко. Но здесь мне нужно воспроизвести массив из 100 объектов максимум. Кроме того, данные будут динамическими. Не могли бы вы предложить мне способ достижения цели с помощью NodeJS.

Не могли бы вы показать код?

Kick Buttowski 12.02.2023 18:46
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
Аутсорсинг разработки PHP для индивидуальных веб-решений
Аутсорсинг разработки PHP для индивидуальных веб-решений
Услуги PHP-разработки могут быть экономически эффективным решением для компаний, которые ищут высококачественные услуги веб-разработки по доступным...
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
Слишком много useState? Давайте useReducer!
Слишком много useState? Давайте useReducer!
Современный фронтенд похож на старую добрую веб-разработку, но с одной загвоздкой: страница в браузере так же сложна, как и бэкенд.
Узнайте, как использовать теги <ul> и <li> для создания неупорядоченных списков в HTML
Узнайте, как использовать теги <ul> и <li> для создания неупорядоченных списков в HTML
HTML предоставляет множество тегов для структурирования и организации содержимого веб-страницы. Одним из наиболее часто используемых тегов для...
0
1
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы хотите получить предложение, вы можете сделать что-то вроде этого:

  1. Создайте функцию, которая принимает в качестве параметра желаемую дату

  2. Создайте переменную, содержащую массив, в котором вы сохраните все те «идентификаторы», которые соответствуют вашему условию.

  3. Создайте цикл for

  4. Создайте условие if, которое соответствует следующему условию:

  • если дата существует в "FromTime" или существует в "ToTime", нажмите на ваш "массив идентификаторов"
  1. Верните свой массив идентификаторов

Вот реализация кода:

function filterObjByDate(TO_MATCH_DATE) {
  let ids = [];

  for (let i = 0; i < dynamicObjectArray.length; i++) {
    if (
      dynamicObjectArray[i].FromTime === TO_MATCH_DATE ||
      dynamicObjectArray[i].ToTime === TO_MATCH_DATE
    ) {
      ids.push(dynamicObjectArray[i].Id);
    }
  }

  return ids
}

Вот и все. Если у вас есть еще вопросы, спросите меня 😀👍

Ответ принят как подходящий

Вы можете использовать встроенный конструктор JS Date для сравнения дат вместо прямого использования строки.

Отфильтруйте подходящие объекты и сопоставьте идентификаторы.

Вы можете сделать что-то вроде этого.

const dynamicObjectArray = [{
    Id: 1422859025,
    FromTime: "2023-02-12T19:00:00Z",
    ToTime: "2023-02-12T20:00:00Z"
  },
  {
    Id: 1422859027,
    FromTime: "2023-02-12T18:00:00Z",
    ToTime: "2023-02-12T19:00:00Z"
  }
];

const matchTime = new Date("2023-02-12T19:00:00Z").getTime();

const matchIds = dynamicObjectArray.filter(obj => {
  const fromTime = new Date(obj.FromTime).getTime();
  const toTime = new Date(obj.ToTime).getTime();
  return matchTime === fromTime || matchTime === toTime;
}).map(obj => obj.Id);

console.info(matchIds);

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