多个值后过滤

时间:2018-06-12 11:40:08

标签: javascript arrays json typescript filter

我有一个模态用于根据过滤器过滤项目,我的问题是我可以将它们作为过滤器只给出标题,而我还想给作者和年份输入不同的文本。

这是我的modal.ts函数,仅用于过滤标题(我想过滤标题,作者和年份)

filterItems() {
     this.filteritems = this.items.filter(item =>item.title.toLowerCase().indexOf(this.searchTerm.toLowerCase()) > -1);
}

这是我的json的例子:

[
 {
   "id":"1",
   "author": "Chinua Achebe",
   "country": "Nigeria",
   "imageLink": "images/things-fall-apart.jpg",
   "language": "English",
   "link": "https://en.wikipedia.org/wiki/Things_Fall_Apart\n",
   "pages": 209,
   "title": "Things Fall Apart",
   "year": 1958
 }
]

3 个答案:

答案 0 :(得分:1)

您可以连接要过滤的所有字段并测试连接字符串:

this.filteritems = this.items.filter(item 
  => (item.title + item.author + item.year).toLowerCase().indexOf(this.searchTerm.toLowerCase()) > -1);})

答案 1 :(得分:0)

为了便于阅读,我说使用这样的东西:

filterItems() {
  const searchTerm = this.searchTerm.toLowerCase();

  this.filterItems = this.items.filter(item =>
       item.title.toLowerCase().includes(searchTerm)
    || item.author.toLowerCase().includes(searchTerm)
    || item.years == searchTerm)
}

这种方法非常易读,因为我们可以准确地看到我们过滤了什么。

另外,这里是String.prototype.includes的文档。

答案 2 :(得分:0)

试试这个:



public function nameDeleteById($data){

    $delete_id = $data['delete_id'];

    $stmt = $this->pdo->prepare("SELECT * FROM name WHERE id=:delete_id");
    $stmt->bindparam(":delete_id", $delete_id);
    $stmt->execute();

    if ($stmt) {
        while ($delimg=$stmt->fetch(PDO::FETCH_ASSOC)) {
            unlink($delimg['image']);
            unlink($delimg['imagetwo']);
        }
    }
    $stmt=$this->pdo->prepare("DELETE FROM name WHERE id=:delete_id");
    $stmt->bindparam(":delete_id", $delete_id);
    $stmt->execute();
    if ($stmt) {
        $msg = 'Name Deleted Successfully';
        return $msg;
    } else {
        $msg = 'Name Not Deleted Successfully';
        return $msg;
    }
}




注意:根据OP,我假设所有三个字段(标题,作者和年份)都是必填字段。