[英]How do I select an Object based on the key value - VueJS
我在 Vuejs 中有一个 object(见下文)。 我想 select email 值,即:“foo@bar.com”。
{
"fields": [
{
"label": "email",
"value": "foo@bar.com",
},
{
"label": "firstName",
"value": "Foo",
},
{
"label": "lastName",
"value": "Bar",
},
]
}
我可以做一个
v-for(field in fields)
然后添加一个 if 语句以仅显示 email
<div v-if="field.label == 'email'">{{field.value}}</div>
但我想知道是否有更好的方法来基于键值的字段 select 而无需遍历整个数据 object。
我尝试不成功地做这样的事情:
fields(label, 'email')
// and
v-if fields.label == 'email'
一种解决方案是创建字段label
到value
computed: {
fieldMap () {
return Object.fromEntries(this.fields.map(({ label, value }) => [ label, value ]))
}
}
然后你可以使用
<div>{{ fieldMap.email }}</div>
如果您只想使用此特定字段,则可以创建一个计算属性以使访问更容易
computed: {
emailField () {
let field = this.fields.find(({ label }) => label === 'email')
return field ? field.value : ''
}
}
然后你可以使用
<div>{{ emailField }}</div>
您也可以检查当前呈现的键是否具有与相应键与“电子邮件”标签自己的索引相匹配的索引。
请注意,这仅在这种情况下有效,因为我们已经知道 object 的确切值。
<div v-for="(field, index) in fields" :key="index">
<div v-if="index === 0">
{{ field.value }}
</div>
<div v-else>
Not email: {{ field.value }}
</div>
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.