2017-09-01 90 views
0

我有一个名为attrs的数组,其中包含多个对象。如何仅从对象中获取所需的数据

当我打印console.log(attrs)我会得到这个

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

随着,我一个对象调用selectParams这样,

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

我已经打印出的对象,我得到了解决这个样子,

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

现在我只需要type从这个对象,我试图打印这样的,

console.log(attrs.selectParams.type) 

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

但我得到未定义的两个控制台。如何获得只有类型?

+0

'var a = attrs.selectParams; var b = JSON.parse(a); 控制台。日志(二)'这是我已经尝试过,得到错误'JSON在位置1的意外令牌r' – krish

回答

1

从您的第一行代码看来,该对象已被字符串化。尝试

JSON.parse(selectParams).type 
+3

这不是JSON。至少在它上面使用'JSON.parse'是无效的。 –

+0

是的,这是真的Yury,我只是希望它实际上是有效的JSON,并被错误地复制,因为它有一个对象作为一个字符串,并且它不是实际字符串化JSON很奇怪。 – jontewks

+0

当我尝试喜欢这个,我得到的错误'JSON在位置1的意想不到的令牌r' – krish

1

你的对象实际上是一个string是因为它的值是在""。如果你可以根据JSON填充你的财产,你可以轻松地通过

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

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

得到它如果你不能做到这一点,也不能创建一个对象不是字符串,你需要拆分你的字符串分成几部分并获得一个。

但我认为你可以使它成为objectJSON格式。

+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

关于使用正则表达式如何?

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,它会选择第二个。

如果你想表达的更具体,那么你可以使用RegExr.com

这就是现在选择编辑这个表达式:

Image

我希望这有助于!

+0

编辑了代码段,以便代码仅显示** doorDelivery **,因此它不显示数组,而只显示类型内的值。 – Granny