我正在根据我提供组件的范围创建一个v-for列表:
<div class="checkbox" v-for="(value, key) in range">
我正在将我的数据作为支柱提供:
"{ 0: '0 stars', 1: '1 star', 2: '2 stars' }"
当我记录typeof
时,我的v-for键将始终设置为字符串。这很奇怪,因为我传递的对象将密钥保存为数字而不是字符串。
当我将密钥传递给方法时,我不想经常对其进行类型转换。有没有办法轻易地进行类型转换?
还有什么可能导致这个字符串而不是int?
每当我调试我的range
对象时,键都会显示为紫色,所以我猜测它们仍被视为整数?
答案 0 :(得分:1)
在JavaScript对象中,键始终是字符串。它提供的键不是字符串,然后通过javascript自动转换为字符串。 AFAIK是设计选择。见Object.keys()
你可以将索引作为你的第三个论点传递:
<div class="checkbox" v-for="(value, key, index) in range">
并将索引传递给您的方法,但是当vuejs发出警告时(here):
) When iterating over an object, the order is based on the key enumeration order of Object.keys(), which is not guaranteed to be consistent across JavaScript engine implementations.
最好像这样投射myMethod(Number(key))