JS:一个对象的属性值在一个字符串中依次包含多个值。如何访问它们?
Posted
技术标签:
【中文标题】JS:一个对象的属性值在一个字符串中依次包含多个值。如何访问它们?【英文标题】:JS: property-value of an object contains in turn multiple values in a string. How to Access them? 【发布时间】:2018-03-03 06:30:44 【问题描述】:我在 JS 中访问对象的属性值时遇到问题。属性值称为“_value”并包含一个字符串。该字符串再次被划分为其他一些值。看看这篇文章中的图片,了解我在说什么;)
JS Property-Value contains in turn multiple values in a string.
我的问题是如何访问这些特定值。 例如以这样的方式:
x = sampleObject[0]._value.person
print(x) = 1
y = sampleObject[0]._value.V_number
print(y) = sg
z = sampleObject[0]._value.tense
print(z) = past
...
...作为结果获取图像中第一个条目的值。
我想我可以先尝试访问“_value”。而不是对返回的字符串进行多次操作。但这在我看来非常复杂,特别是因为返回的字符串“_values”在它们包含的子属性中有所不同。
完美的解决方案是在 和 中拥有一个具有所有值的对象,它们自己喜欢
Object[x] = _begin: "4"
_end: "9"
_sofa: "6"
_case: "nom"
_number: "sg"
_gender: "masc"
...
_xmi:id: "2625"
...
不幸的是,我不是自己生成对象。该对象是读取 xml 文件的结果。所以对我来说,实际上不可能在自己的条目中写入该字符串的所有值。
我很高兴听到您的一些可能的解决方案或想法。
谢谢!
【问题讨论】:
添加javascript
标签就好了。
完成 ;) 添加标签
【参考方案1】:
字符串是......只是一个字符串,因此您不能像访问结构化对象一样访问它的一部分。
_value
属性似乎遵循"key=value|key=value|key=value"
的语法,所以我建议先使用以下代码解析您的对象数组:
sampleObject.forEach( o =>
o._value = Object.assign(...o._value.split('|')
.map( pair => pair.split('=') )
.map( ([k, v]) => ( [k]: v ) ))
);
然后你的代码就可以工作了。上面的代码会将字符串拆分为多个片段,并根据它找到的键/值对创建对象,并将其分配回_value
属性。
var sampleObject = [
_value: "V_number=sg|person=1|tense=past|mood=ind"
];
sampleObject.forEach( o =>
o._value = Object.assign(...o._value.split('|')
.map( pair => pair.split('=') )
.map( ([k, v]) => ( [k]: v ) ))
);
console.log(sampleObject[0]._value.person);
console.log(sampleObject[0]._value.V_number);
console.log(sampleObject[0]._value.tense);
【讨论】:
以上是关于JS:一个对象的属性值在一个字符串中依次包含多个值。如何访问它们?的主要内容,如果未能解决你的问题,请参考以下文章