2016-11-23 4 views
0

動的文字列を分割する必要があります。文字列は、Code、Name、EffectDateを持つ以下のように見えます。または(Code and Name)または(Code and EffectDate)または(Name and EffectDate)のみを持つことができます。あなたはポイントを得た。 (?:(?!値)私はB \このパターンを使用 正規表現を使用して文字列を分割する

... filters:string; data:string[]; ... this.data = this.filters.split("\b(?:(?!value)\w)+[a-zA-Z0-9/]\b"); console.log(this.data); 

\ w)を+ [A:

{"Code":{"value":"1"},"Name":{"value":"Entity1"},"EffectDate":{"value":"23/11/2016"}} 

私は私のコードでやった

... 
this.data[0].key ='Code'; \\something like this (desired result) 
this.data[0].value = '1'; 
this.data[1].key = 'Name'; 
this.data[1].value = 'Entity1'; 
this.data[2].key = 'EffectDate'; 
this.data[2].value = '23/11/2016'; 

へ-zA-Z0-9 /] \ bでも、依然として目的の結果が得られませんでした。 this.filterは、常に同じ文字列を持つ配列を1つだけ返します。どんな助言も役に立つでしょう。ありがとうございました。

更新#1:

私はDataTableのためのPrimeNg拡張子を使用していると私は、パラメータとしてイベントを取得します。その中で、event.filtersは私にフィルターオブジェクトのリストを返します。オブジェクトをサービスに送ることはできません。サービスと一緒に作業するための形式である必要があります。 JSONのように見える

enter image description here

+2

はこのような何かを試してみてください? –

+0

迅速な対応のために@HenryWilliamsに感謝します。更新された質問の更新#1を参照してください。私はオブジェクトの名前(コード、名前、EffectDate)を取得する方法を知らない。 –

+0

'event.filters'はすでにオブジェクトであるため、そのプロパティに直接アクセスできるはずです。 'event.filters.Code'、' event.filters.Name'などです。問題を正しく理解しているかどうかは不明です。 –

答えて

1

data = JSON.parse(content)を実行し、キーの場合はkeys(data)、値の場合はdata[i]["value"]を使用してキー値を反復することからあなたを止めることは何ですか?あなたの代わりにJSON.parse()を使用しての手動でJSONオブジェクトを解析しようとしている理由は

var data = []; 
for(var i in event.filters){ 
    data.push({"key": i, "value": event.filters[i].value}); 
} 
+0

これは私が必要とするものです。ありがとう@Hong。 –

関連する問題