5 回答
TA贡献1784条经验 获得超9个赞
formThead.forEach((item) => {
item.isShow = formTheadData.includes(item.value);
});
TA贡献1744条经验 获得超4个赞
更新 2
let hash = formTheadData.reduce((p, c) => [p[c] = 0, p][1], {});
// 得到 hash
// {
// oppoProjectName: 0,
// customerName: 0
// }
formThead.forEach((item) => {
// 不使用 includes 来检索数据
// item.isShow = formTheadData.includes(item.value);
item.isShow = !!hash[item.value]
});
这样就可以避免循环嵌套,性能可以有大幅提升。
filter
是会返回一个新数组的,因此这个解法很有问题。
非常抱歉,由于不是专职前端,这些细节容易忽略,误导题主和各位了。
原答案:
formThead.filter(h => formTheadData.indexOf(h.value) === -1).forEach(h => h.isShow = false)
TA贡献1796条经验 获得超7个赞
var formThead= [
{
label:'机会名称',
value:'oppoProjectName',
isShow:true
},
{
label:'客户名称',
value:'customerName',
isShow:true
},
{
label:'销售',
value:'saleName',
isShow:true
}
]
formTheadData=['oppoProjectName','customerName']
for(var i=0;i<formThead.length;i++){
for(var j=0;j<formTheadData.length;j++){
if(formThead[i].value==formTheadData[j]){
formThead[i].isShow=true
}else{
formThead[i].isShow=false
}
}
}
TA贡献1828条经验 获得超13个赞
formThead.map((item) => {
item.isShow = false;
formTheadData.some((el,index) => {
if(item.value == el){
item.isShow = true;
formTheadData.splice(index,1);
return true;
}
})
})
TA贡献1886条经验 获得超2个赞
“如果在formThead中任何一位的value都不在formTheadData中 就把对用的formThead中的isShow变成false”
楼主你能先解释下你这句话的意思吗?只从字面理解的话,只要formThead中的所有item的value都不在formTheadData中的话,就把formThead中所有的item的value变成false。但是貌似你又想表达formThead如果有item的value不存在formTheadData中的就把它的isShow置为false。
添加回答
举报