【问题标题】:Search Through Array, Return Results搜索数组,返回结果
【发布时间】:2018-04-09 21:14:40
【问题描述】:

我正在尝试合并一个搜索函数,该函数返回与标题匹配的数组。现在,它只返回一个完全匹配。我想要类似于this filter table function 的东西,每当我输入一个字母时,结果就会缩小。这是我正在使用的内容以及我的数据的样子。

let movies = [
{title: "Pacific Rim", year: "2018"}, 
{title: "Batman", year:"1984"},
{title: "Super Troopers 2", year: "2018"}
]

let filteredMovies = movies.filter(movie => {
        if (this.state.query.length === 0) {
          return movie;
        } else {
          return movie.title === this.state.query;
        }
      });

我应该使用.filter 吗?也许某种正则表达式?

感谢您的帮助

【问题讨论】:

标签: javascript reactjs search


【解决方案1】:

使用String.includes() 查找所有包含该字符串的标题:

const movies = [{"title":"Pacific Rim","year":"2018"},{"title":"Batman","year":"1984"},{"title":"Super Troopers 2","year":"2018"}];

const query = 'roop';

// if query length is 0 use a copy of movies, else get the filtered result
const filteredMovies = query.length ? movies.filter(movie => {
  return movie.title.includes(query);
}) : [...movies];

console.log(filteredMovies);

【讨论】:

    【解决方案2】:

    如果你想测试忽略大小写,那么你可以使用正则表达式

    (new RegExp(this.state.query,"i")).test(movie.title)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 2015-05-16
      • 1970-01-01
      相关资源
      最近更新 更多