Nano Hash - криптовалюты, майнинг, программирование

Фильтровать массив объектов по нескольким значениям

Я хочу иметь возможность создавать новый массив объектов, фильтруя один по нескольким условиям поиска.

Пример:

  const arr = [
  {
      'city': 'Atlanta',
      'state': 'Georgia'
  },
  {
      'city': 'Chicago',
      'state': 'Illinois'
  },
  {
      'city': 'Miami',
      'state': 'Florida'
  }
]

const searchTerms = ['Georgia', 'Florida']

Я хотел бы иметь возможность фильтровать его следующим образом:

arr.filter(obj => obj['state'].includes(searchTerms))

Я обнаружил, что ввод одной строки с .includes работает, но не массива. Я открыт для другой логики или даже сторонней библиотеки, такой как lodash или что-то в этом роде. Я хотел бы вернуть новый массив объектов только с состояниями, которые находятся в массиве searchterms


  • вы должны искать состояние в searchTerms, а не наоборот. 02.12.2018

Ответы:


1

Вы должны вызывать searchTerms.includes на obj.state, а не наоборот. Так становится:

let result = arr.filter(obj => searchTerms.includes(obj.state));

Это означает отфильтровывать объекты, свойство state которых включено в массив searchItems.

Пример:

const arr = [{'city': 'Atlanta', 'state': 'Georgia'}, {'city': 'Chicago', 'state': 'Illinois'}, {'city': 'Miami', 'state': 'Florida'}];

const searchTerms = ['Georgia', 'Florida'];

let result = arr.filter(obj => searchTerms.includes(obj.state));

console.log(result);

02.12.2018
  • Спасибо большое! Это сработало и имеет смысл, должно быть, слишком поздно, и мой мозг не работает должным образом, ха-ха. Я отмечу твой ответ, когда он позволит мне 02.12.2018
  • Добро пожаловать! У всех нас есть такие моменты, ха-ха. Удачного кодирования ;-) 02.12.2018

  • 2

    Если вас интересует решение с использованием Ramda:

    const cities = [
      { 'city': 'Atlanta',
        'state': 'Georgia' },
        
      { 'city': 'Chicago',
        'state': 'Illinois' },
        
      { 'city': 'Miami',
        'state': 'Florida' } ];
        
    
    const findCities = (search, cities) => {
      const predicate = R.flip(R.includes)(search);
      return R.filter(R.compose(predicate, R.prop('state')), cities);
    };
    
    console.log(
      findCities(['Georgia', 'Florida'], cities)
    );
    <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>

    02.12.2018

    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..