使用生成的查询字符串在 JSON 对象中搜索

Searching in a JSON object with generated query string

我正在尝试使用 Lo-Dash 在 Angular JS 中搜索 JSON 对象。这里的挑战是我的 JSON 结构将动态变化。因此,我的搜索查询字符串也必须更改。

我的 JSON 格式为:

    {       
            "SERIES": "ABC000123123",
            "SECTOR": "E",
            "INDUSTRY": "N31",
            "DURATION": "1A"    }, 

   {        "SERIES": "ABC000123456",
            "SECTOR": "E",
            "INDUSTRY": "N11",
            "DURATION": "12"    }, 

   {        "SERIES": "ABC000456789",
            "SECTOR": "E",
            "INDUSTRY": "N31",
            "DURATION": "1B"    }

我的JSON也可以是下面的格式:

{       
            "SERIES": "DEF000321",
            "AREA": "C2",
            "ITEM": "123"    },
{       
            "SERIES": "DEF000321",
            "AREA": "D0",
            "ITEM": "675"    },

键 AREA、ITEM、SECTOR、INDUSTRY 等会有所不同。

在上述所有情况下,只有 SERIES 字段保持不变。 我需要传入其余属性的键值对来检索 SERIES 值。

为简单起见,我使用 lodash 搜索上述 JSON 的方法如下:

_.map(_.filter(JSON_Object, function (value) { 
return (value.AREA == D0) && (value.ITEM == C2) }), 'SERIES');

我在其中以编程方式生成以下字符串:

(value.AREA == 'D0') && (value.ITEM == 'C2')

这种方法行不通。 当我对这些值进行硬编码时,它工作正常。当我以编程方式生成查询字符串时,不是相反吗?

我尝试遍历列表并一次过滤掉一个属性,但这会增加循环次数和搜索的复杂性。

有什么建议/解决方法吗?提前致谢

编辑:添加了控制台截图: enter image description here

试试这个方法:https://fiddle.jshell.net/koljada/53esaqLz/1/

var JSON_Object = [{
  "SERIES": "ABC000123123",
  "SECTOR": "E",
  "INDUSTRY": "N31",
  "DURATION": "1A"
}, {
  "SERIES": "ABC000123456",
  "SECTOR": "E",
  "INDUSTRY": "N11",
  "DURATION": "12"
}, {
  "SERIES": "ABC000456789",
  "SECTOR": "E",
  "INDUSTRY": "N31",
  "DURATION": "1B"
}];

var query = "(value.SECTOR == 'E') && (value.INDUSTRY == 'N11')";

var result = _(JSON_Object)
  .filter(new Function("value", "return " + query))
  .map('SERIES')
  .value(); // => ["ABC000123456"]