繁体   English   中英

从javascript中的json中提取子集

[英]Extract subset from json in javascript

我想基于JavaScript中的输入从主要JSON批量数据中减去JSON条目。 JSON主数据中的每个条目都有其自己的唯一ID,但过滤器应基于文本标识符而不是ID。 我想检索例如包含burgBurgBURGbUrg等)或任何其他给定bUrg所有条目。 当然,这也应与其他搜索词一起使用。 我不具备执行此操作的JavaScript技能。

在下面给出的数据中,这将返回3个结果。 显然,结果应为完全相同的JSON格式。

JSON示例:

{"type":"FeatureCollection","features":[{"id":1,"text":"Cape Town"},{"id":2,"text":"Kimberley"},{"id":3,"text":"Beaufort West"},{"id":4,"text":"Johannesburg Park"},{"id":5,"text":"Germiston"},{"id":6,"text":"Pietermaritzburg"},{"id":7,"text":"Durban"},{"id":8,"text":"Bellville"},{"id":9,"text":"Wellington"},{"id":10,"text":"Huguenot"},{"id":11,"text":"Worcester"},{"id":12,"text":"Matjiesfontein"},{"id":13,"text":"Laingsburg"},{"id":14,"text":"Prince Albert"},{"id":15,"text":"Hutchinson"},{"id":16,"text":"De Aar"},{"id":17,"text":"Warrenton"}]}

请勿为此使用JavaScript。 请改用SQL及其LIKE运算符。

但是,如果您坚持为此使用JavaScript……

就像HTML一样,由于序列化,正则表达式无法完全解析JSON。

但是,在JSON.parse之后进行过滤非常容易。 您可以使用Array.prototype.filter()方法:

 var s = '{"type":"FeatureCollection","features":[{"id":1,"text":"Cape Town"},{"id":2,"text":"Kimberley"},{"id":3,"text":"Beaufort West"},{"id":4,"text":"Johannesburg Park"},{"id":5,"text":"Germiston"},{"id":6,"text":"Pietermaritzburg"},{"id":7,"text":"Durban"},{"id":8,"text":"Bellville"},{"id":9,"text":"Wellington"},{"id":10,"text":"Huguenot"},{"id":11,"text":"Worcester"},{"id":12,"text":"Matjiesfontein"},{"id":13,"text":"Laingsburg"},{"id":14,"text":"Prince Albert"},{"id":15,"text":"Hutchinson"},{"id":16,"text":"De Aar"},{"id":17,"text":"Warrenton"}]}'; var input = "burg"; var o = JSON.parse(s); o.features = o.features.filter(e => RegExp(input, 'i').test(e.text)); console.log(JSON.stringify(o)); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM