2017-11-07 12 views
-1

JavaScriptの入力に基づいてメインのJSONバルクデータからjsonエントリを差し引いてみたいと思います。メインJSONデータの各エントリには固有のIDがありますが、フィルタはIDではなくテキストIDに基づいている必要があります。たとえば、burgBurgBURGbUrgなど)という単語を含むすべてのエントリを検索したいと思います。もちろん、これは他の検索語でも有効です。私はこれを行うためのJavaScriptスキルを持っていません。javascriptのjsonからサブセットを抽出します

以下のデータでは、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"}]} 
+1

するとあなたはJSオブジェクトのうち、必要なものを選択し、それを正しく解析:あなたはArray.prototype.filter()メソッドを使用することができます。 – zerkms

+0

ええ、私は多くのことを助けてくれるのではないかと恐れています....現在のコードはすでにJSON全体を解析していますが、解析する前に解析するか、解析した後にフィルタをかけるのかはわかりません。 – Coryza

+0

"解析前または解析後にフィルタリングする方が簡単かどうかを知ることはできません。---それで、何かを実装し、事実に基づいて決定しますか?誰があなたを信頼しますか - あなた自身またはインターネット上の他人? – zerkms

答えて

2

はこのためにはJavaScriptを使用しないでください。代わりにSQLとそのLIKE演算子を使用してください。

But if you insist on using JavaScript for this…

だけHTMLのように、正規表現は完全に理由シリアライズのJSONを解析することはできません。

JSON.parse以降のフィルタリングは非常に簡単です。

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));

+0

ありがとうございます!それはトリックを行うようだ。 1つの短い追加Q:固定文字列 'burg'をテキスト変数に置き換えるにはどうすればよいですか?私はJavascript RegExのドキュメントで答えを見つけようとしましたが、私は明らかに成功しませんでした。 – Coryza

+0

@Coryzaあなたが答えが好きなら、適切な感謝はupvoteおよび/または受け入れることです。 (私は、スニペットをフォローアップに答えるため少し変更するつもりです) –

+0

あなたは絶対に正しいです。私の興奮によって私はそれを忘れました;)。再度、感謝します。 – Coryza

関連する問題