let a = [1, 2, 3, 4];
let b = [
{
obj: {
id: 1,
lock: false,
},
},
{
obj: {
id: 2,
lock: false,
},
},
];
b 的 id 在 a 中出现了就改为 true
解的方法就套娃 有没有更好的解法
1
yigemeirenyongde 2020 年 7 月 24 日
Number(true) Number(item.id) ?
|
3
ZeroShiro OP 是 lock 改为 true
|
4
TomatoYuyuko 2020 年 7 月 24 日
数据不复杂而且特征明显的话,直接转字符串正则或者转数组切分取出 id,includes 一遍就出来了
不过还是套娃可读性高 |
5
BreadKiller 2020 年 7 月 24 日 b.forEach(o=>a.includes(o.obj.id)&&(o.obj.lock = true))
|
7
ZeroShiro OP @BreadKiller 这样 ok 感谢大佬
|
8
heasy 2020 年 7 月 24 日 b.map(item => item.obj.lock = a.includes(item.obj.id))
|
9
ZeroShiro OP let a = [1, 2, 3, 4];
let b = [ { obj: { children: [ { id: 1, lock: true, }, { id: 2, lock: true, }, ], }, }, ]; 。。。 |
10
ZeroShiro OP 😂 升级了
|
11
Vegetable 2020 年 7 月 24 日
写个递归,a 改成 Set,应该就没什么可做的了。
|
13
sima675 2020 年 7 月 24 日
b 改成对象就好了嘛
|
15
zzuieliyaoli 2020 年 7 月 24 日
@heasy 这个好,没副作用
|
16
MMZZ 2020 年 7 月 24 日
b.map(item => {
return { obj: { id: item.obj.id, lock: a.includes(item.obj.id) ? true : false } } }) 前面都不太行吧? |
18
auroraccc 2020 年 7 月 24 日
b.map(ele => ({obj: {...ele.obj, lock: a.includes(ele.obj.id)}}))
|