首页 > 解决方案 > 如何根据另一个值在嵌套数组中查找一个值?

问题描述

我正在处理嵌套数组并尝试根据另一个值在嵌套数组中找到一个值。我想找到OptionCode当前活动的过滤器。

filters = [
      {
        FilterCode: "TourPrice",
        FilterName: "Tour Price",
        Options: [
          { Name: "Free", OptionCode: "Free", active: false, blocked: false },
          { Name: "Paid", OptionCode: "Paid", active: false, blocked: false },
          {
            Name: "Free and Paid",
            OptionCode: "FreeAndPaid",
            active: true, //Find OptionCode Here
            blocked: false,
          },
        ],
      },
      {
        FilterCode: "SortedBy",
        FilterName: "Sorted By",
        Options: [
          {
            Name: "Most Relevant",
            OptionCode: "MostRelevant",
            active: true, // Find OptionCode Here
            blocked: false,
          },
          {
            Name: "Latest Tour",
            OptionCode: "LatestTour",
            active: false,
            blocked: false,
          },
          {
            Name: "Oldest Tour",
            OptionCode: "OldestTour",
            active: false,
            blocked: false,
          },
          {
            Name: "Lowest Price",
            OptionCode: "LowestPrice",
            active: false,
            blocked: false,
          },
        ],
      },
    ],

对于上述数组,预期结果应该类似于["FreeAndPaid","MostRelevant"]

标签: javascript

解决方案


如果每个过滤器都有一个活动选项,您可以使用

console.log(filters.map(filter => filter.Options.find(option => option.active).OptionCode))

filters = [
      {
        FilterCode: "TourPrice",
        FilterName: "Tour Price",
        Options: [
          { Name: "Free", OptionCode: "Free", active: false, blocked: false },
          { Name: "Paid", OptionCode: "Paid", active: false, blocked: false },
          {
            Name: "Free and Paid",
            OptionCode: "FreeAndPaid",
            active: true, //Find OptionCode Here
            blocked: false,
          },
        ],
      },
      {
        FilterCode: "SortedBy",
        FilterName: "Sorted By",
        Options: [
          {
            Name: "Most Relevant",
            OptionCode: "MostRelevant",
            active: true, // Find OptionCode Here
            blocked: false,
          },
          {
            Name: "Latest Tour",
            OptionCode: "LatestTour",
            active: false,
            blocked: false,
          },
          {
            Name: "Oldest Tour",
            OptionCode: "OldestTour",
            active: false,
            blocked: false,
          },
          {
            Name: "Lowest Price",
            OptionCode: "LowestPrice",
            active: false,
            blocked: false,
          },
        ],
      },
    ]
console.log(filters.map(filter => filter.Options.find(option => option.active).OptionCode))


推荐阅读