如何只从对象获取所需的数据

时间:2017-09-01 06:22:05

标签: javascript jquery

我有一个名为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)

但是两个控制台都没有定义。如何只获得类型?

4 个答案:

答案 0 :(得分:1)

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

JSON.parse(selectParams).type

答案 1 :(得分:1)

您的对象实际上是string,因为它的值在""中。如果您可以根据JSON填充您的财产,则可以通过

轻松获取

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

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

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

但我认为您可以将其设为objectJSON格式。

答案 2 :(得分: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,它将选择第二个。

如果您希望表达式更具体,则可以使用RegExr.com

编辑此表达式

这就是它现在选择的内容:

Image

我希望这有帮助!

答案 3 :(得分:0)

得到解决方案:

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