簡體   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