vue中includes失效问题,怎么解决?
<el-tab-pane label="KYC标签" name="first"> <template v-for="item in labelList">
<div class="title" :style="labelList[0] ? '' : 'margin-top: 12px;'">{{item.name}}</div>
<div class="qian">
<div class="tag">
<span class="Classification"
v-for="(k, index) in item.detailArr"
:key="index"
:class="{active : tabIndex.includes(k) }"
@click="oncheck(k)">
{{k.name}}{{tabIndex.includes(k)}}</span>
</div>
</div>
</template>
</el-tab-pane>
oncheck(item){
if (this.tabIndex.includes(item)) { //includes()方法判断是否包含某一元素,返回true或false表示是否包含元素,对NaN一样有效
//filter()方法用于把Array的某些元素过滤掉,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素:生成新的数组
this.tabIndex = this.tabIndex.filter(function(ele) {
return ele != item
})
} else {
this.tabIndex.push(item)
}
},
回答:
猜测你的 tabIndex
是一个对像数组,使用 includes
去匹配的时候不会认为是同一个的。
添加的时候还会因为是浅拷贝只是拷贝了内存地址的指向,所以可以匹配上,
如果后续回填的时候是分别填入的,那么就不会被认为是同一个。
一个演示代码:
const a = {}const b = {}
console.log('a === b', a === b)
console.log('a == b', a == b)
// a === b false
// a == b false
console.log('a === a', a === a)
console.log('a == a', a == a)
// a === a true
// a == a true
所以最好在一些例如说元素激活的时候,最好是把元素的唯一 key
收集起来,在判断中使用key
键去匹配。
比如说
const activeKeys = ['key1', 'key2'];activeKeys.includes(item.key)
````
回答:
把includes里的k对象改成以对象中的id做对比(k.id)
以上是 vue中includes失效问题,怎么解决? 的全部内容, 来源链接: utcz.com/p/933041.html