使用生成的查询字符串

时间:2016-06-06 20:23:28

标签: angularjs json lodash

我正在尝试使用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"    },

关键区域,项目,行业,行业等将有所不同。

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

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

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

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

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

这种方法不起作用。 当我对值进行硬编码时,它可以正常工作。当我以编程方式生成查询字符串时,反之则不然。

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

有任何建议/解决方法吗?提前致谢

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

1 个答案:

答案 0 :(得分:0)

尝试这种方法: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"]