Typescript通过另一个字符串数组过滤对象数组

时间:2017-02-24 13:22:17

标签: arrays angular typescript

我坚持我的打字过滤功能。

我有一个对象数组:

[
  {
    "id": 12345,
    "title": "Some title",
    "complexity": [
      {
        "slug": "1" // my search term
        "name": "easy"
      }, {
        "slug": "2" // my search term
        "name": "middle"
      },
{...}

我有一系列允许复杂的字符串:

public allowedComplexityArray:Array<string> = ["1"];

我的任务:我只想显示允许复杂度为“1”的对象。

但不知怎的,我的功能不起作用,我不知道为什么:

allowedMeals = meals.filter(meal => {
    return meal.complexity.every(complexityObj => that.allowedComplexityArray.indexOf(complexityObj.slug) > -1)
});

1 个答案:

答案 0 :(得分:4)

尝试:

let allowedMeals = data.filter(meal => {
    return meal.complexity.findIndex(complexityObj => 
        allowedComplexityArray.findIndex(m => m == complexityObj.slug) > -1) > -1
});

我在findIndex子句中使用filter而不是return,所以每次都不需要扫描整个数组。