
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)}})) |