let a = ['1', '2']
let b = [{
label: "选项1"
value: "1"
},{
label: "选项2"
value: "2"
},{
label: "选项3"
value: "3"
}]
需求是比较a数组和b数组,如果a数组的值等于b数组的value值,给b数组的每一个对象添加一个新属性disabled,如果相等就为true,不相等就为false
let a = ['1', '2']
let b = [{
label: "选项1"
value: "1"
},{
label: "选项2"
value: "2"
},{
label: "选项3"
value: "3"
}]
需求是比较a数组和b数组,如果a数组的值等于b数组的value值,给b数组的每一个对象添加一个新属性disabled,如果相等就为true,不相等就为false
一个不完整的处理方法,因为值需要修改b的元素,所以以b元素数量作为计数,a元素数量为参考。
aL=a.length
for (i=0;i<b.length;i++){
if (i<aL){
b[i]["disabled"]= (a[i] == b[i]["value"] );
}else{
b[i]["disabled"]=false;
}
let a = ['1', '2'];
let b = [{
label: "选项1",
value: "1"
},{
label: "选项2",
value: "2"
},{
label: "选项3",
value: "3"
}]
b.map((item,index)=>{
if(item.value == a[index]){
item["disabled"] = true;
}else {
item["disabled"] = false;
}
})
b.forEach((item, index, arr) => (arr[index].disabled = !!a.find((i) => i === item.value)))
如果说只要在 a
中找到了 b
中某个元素的 .value
,就给这个元素加上 disabled = true
属性。那么,只需要遍历 b
的每个元素,然后拿到 value
去 a
中查找,根据结果给它加 .disabled
。
b.forEach(it => { // 对 b 进行遍历
it.disabled = a.includes(it.value); // 这个用 includes 查找就可以
});
如果不是这么简单的查找,而是要一对一的比较,那就需要使用元素的 index
b.forEach((it, i) => {
it.disabled = a[i] === it.value;
});
function Compare(array1,array2,disabled='disabled'){
let arr = array2.length
let bol = false
array2.forEach((item,index) =>{
for(let i=0 ;i<arr;i++){
if(array1[i]==item.value){ bol = true; break} else{ bol = false }
}
bol ? item[disabled]=true : item[disabled]=false;
} )
return array2
}
console.log(Compare(a,b))
8 回答4.6k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
场景应该类似多选,a为选中数组,b为下拉选项的数组,然后下拉选项中选中项目进行特殊处理。