2017-09-01 11 views
0

複数のオブジェクトを持つattrsという1つの配列があります。オブジェクトから必要なデータだけを取得する方法

私はその中で、この

id:"123432" 
class:"delivery" 
selectParams:"{address:currentDelivery.customerDetails.dropID, type:'doorDelivery'}" 

を取得しますconsole.log(attrs)を印刷するとき、私は1つの目的は、このようselectParamsと呼ばれる持って、

selectParams:"{address:currentDelivery.customerDetails.dropID, type:'doorDelivery'}" 
console.log(attrs.selectParams) 

私はそのオブジェクトを印刷していると私はこのようなソリューションを持って、

{address:currentDelivery.customerDetails.dropID, type:'doorDelivery'} 

今はが必要ですこのオブジェクトからと私は

console.log(attrs.selectParams.type) 

console.log(attrs.selectParams[0].type) 

、このように印刷しようとしましたが、両方のconsoles.Howが取得のみ入力するために未定義取得していますか?

+0

'var a = attrs.selectParams; var b = JSON.parse(a); コンソール。log(b) 'これは私が試したものですが、エラーが発生しました' JSONの位置1の予期しないトークンr' – krish

答えて

1

コードの最初の行から、オブジェクトがストリング化されているように見えます。それは""である値をだからあなたのオブジェクトが実際にstringある

JSON.parse(selectParams).type 
+3

これはJSONではありません。少なくとも、JSON.parseを使用することは有効ではありません。 –

+0

はいthats真実Yury、私はちょうどそれが実際に有効なJSONであり、間違ってコピーされたばかりだったと思っていました。オブジェクトが文字列であり、実際の文字列化されたJSONではないというのは非常に奇妙です。 – jontewks

+0

このようにしようとすると、エラー「 '1のJSONで予期しないトークンr'が発生しました。」 – krish

1

試してみてください。あなたはJSONに応じてあなたの財産を取り込むことができれば、あなたは簡単にあなたがそれを行うことができず、また、オブジェクトではない文字列を作成することができない場合は、分割する必要があり

const selectParams = '{"address":"currentDelivery.customerDetails.dropID", "type":"doorDelivery"}'; 
 

 
console.log(JSON.parse(selectParams).type)

を経由して、それを得ることができますあなたの弦を部分に分けて、それを手に入れてください。

でも、objectまたはJSONという形式にすることができます。

+0

これを試してみると、 '1位のJSONで予期せぬトークンr 'というエラーが発生しています – krish

+1

JSONを解析しようとしているためです。既にJSONの場合は解析しないでください – anu

+0

@krish適切なJSON形式ですか?それを見せてもらえますか? –

0

ガット・ソリューション:

var a=attrs.selectParams; 
var b=a.split(':')[2].replace(/}|'/g,' ').trim() 
1

どのようにREGEXを使用してはどうですか?

var text9393 = "{address:currentDelivery.customerDetails.dropID,type:'doorDelivery'}" 
 

 
var test = /type:'(.*?)'/.exec(text9393); 
 

 
console.log(test[1]);

あなたが使用することができ、同じ文字列の複数持っている場合:

var test = /type:'(.*?)'/.exec(text9393)[0]; 

を最後に0が条件付きでくる最初のオブジェクトを選択します正規表現。それを1に変更すると、2番目が選択されます。

あなたは表現がより具体的になりたいなら、あなたはRegExr.com

これを使って、この式を編集することができ、それが今で選択するものである:

Image

私はこれが役に立てば幸い!

+0

コードに** doorDelivery **だけが表示されるようにスニペットを編集したので、配列は表示されず、値がタイプ内に表示されます。 – Granny

関連する問題