0

我在访问 JS 中对象的属性值时遇到问题。属性值称为“_value”并包含一个字符串。该字符串再次被划分为其他一些值。看看这篇文章中的图片,了解我在说什么;)

JS Property-Value 在一个字符串中依次包含多个值。

我的问题是如何访问这些特定值。例如以如下方式:

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 文件的结果。所以对我来说,实际上不可能在他们自己的条目中写入该字符串的所有值。

我很高兴听到您的一些可能的解决方案或想法。

谢谢!

4

1 回答 1

0

字符串......只是一个字符串,因此您不能像访问结构化对象一样访问它的一部分。

_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);

于 2017-09-21T19:44:29.900 回答