代码之家  ›  专栏  ›  技术社区  ›  bellotas

如何从包含子字符串(Javascript和Angular 5)的对象数组中提取元素

  •  1
  • bellotas  · 技术社区  · 7 年前

    我试图获取包含子字符串的数组上的元素。 例如:

     myArray = [{name: "Pablo Ramon", lastName: "Garcia"}, {name: "Ernesto", lastName: "Salgado"}]
    

    并给了一根绳子来寻找 str = "Ra" ,我只想使用创建一个新数组 {name: "Pablo Ramon", lastName: "Garcia"}

    如果我没有错的话,使用 map 但我不知道怎么做。

    编辑

    对象

    export class Car{
      $key: string;
      title: string;
      description: string;
    }
    

    从服务中

      betList: any;
    

    使用下一个命令后出现的错误是:

     this.betList = this.betList.filter(o =>
       Object.values(o).some(s => s.includes(title))
     );
    

    命令2

    this.betList = this.betList.filter(o =>
       Object.values(o).some(s => s.indexOf(title) >= 0)
    );
    

    错误

    Property 'includes' does not exist on type '{}
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   Praveen Kumar Purushothaman    7 年前

    使用 .filter() 简单地说:

    var data = [{
      name: "Pablo Ramon",
      lastName: "Garcia"
    }, {
      name: "Ernesto",
      lastName: "Salgado"
    }];
    var result = data.filter(o => Object.values(o).some(s => s.includes("Ra")));
    
    console.log(result);

    另一个解决方案没有 .includes() :

    var data = [{
      name: "Pablo Ramon",
      lastName: "Garcia"
    }, {
      name: "Ernesto",
      lastName: "Salgado"
    }];
    var result = data.filter(o => Object.values(o).some(s => s.indexOf("Ra") >= 0 ));
    
    console.log(result);
        2
  •  1
  •   Mohammad Usman    7 年前

    您可以使用 .filter() 还有弦的 .includes()

    let data = [{name: "Pablo Ramon", lastName: "Garcia"}, {name: "Ernesto", lastName: "Salgado"}];
    
    let str = 'Ra';
    
    let result = data.filter(o => Object.values(o).some(s => s.includes(str)));
    
    console.log(result);
        3
  •  0
  •   user10616833 user10616833    7 年前
    [{name: "Pablo Ramon", lastName: "Garcia"}, {name: "Ernesto", lastName: "Salgado"}]
    .filter (p => p.name.includes ('Ra'))
    
    //{name: "Pablo Ramon", lastName: "Garcia"}