时常用到一些循环判断对比,想的最多的是for循环,后端返回的geneList是有几千条gene一维数组,数据结构为list:[gene1,gene2,gene3,…],添加功能时不愿意改结构,response里增加了个list1:[gene2,gene8]这样的两对数据,进行循环对比,使同时存在于数组1和数组2数据的加上特殊颜色标识,for循环嵌套在dom里走不通,要实现得用钩子函数重构数组

无对比遍历代码(基于elementui,仅遍历arrayA) :

<span v-for="(i, index) in arrayA" :key="index">  
 {i}  
</span>  

如果用for循环比对,很麻烦,要多增加很多代码量,js里有个array.indexOf(‘a’),来查询字符串对应索引

例子:  
var array = \[1,2,3,4\];  
alert(array.indexOf(3)); // 2   得到索引  
alert(array.indexOf(5)); // -1  

indexOf的代码:

<span v-for="(i, index) in arrayA" :key="index">  
 <span :class="{'color_red': arrayB.indexOf(i) != -1, '': arrayB.indexOf(i) == -1}">{{ i }}</span>  
 or   
 <span :class="{arrayB.indexOf(i) != -1 ? 'color_red': ''}">{{ i }}</span>  
</span>  

然而,也可以通过Vue的过滤器来搞定:
dom:

<span v-for="(i, index) in arrayA :key="index" :class="i | hasName(arrayB) ? 'color_red': ''">  
 {i}  
</span>  

script:

filters: {  
 hasName (data, param) {  
 let isOK = false  
 for (let i in param) {  
 if (param\[i\] == data) {  
 isOK = true  
 break  
 }  
 }  
 console.log(isOK)  
 return isOK  
 }  
}