
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-07-24 09:42:10 +08:00 Number(true) Number(item.id) ? |
2 otakustay 2020-07-24 09:42:16 +08:00 b.filter(o => a.includes(o.obj.id)).forEach(o => o.obj.lock = true) 这样子? |
3 ZeroShiro OP 是 lock 改为 true |
4 TomatoYuyuko 2020-07-24 09:48:46 +08:00 数据不复杂而且特征明显的话,直接转字符串正则或者转数组切分取出 id,includes 一遍就出来了 不过还是套娃可读性高 |
5 BreadKiller 2020-07-24 09:50:58 +08:00 b.forEach(o=>a.includes(o.obj.id)&&(o.obj.lock = true)) |
6 easonHHH 2020-07-24 09:53:02 +08:00 |
7 ZeroShiro OP @BreadKiller 这样 ok 感谢大佬 |
8 heasy 2020-07-24 10:01:57 +08:00 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-07-24 10:29:26 +08:00 写个递归,a 改成 Set,应该就没什么可做的了。 |
13 sima675 2020-07-24 10:42:39 +08:00 b 改成对象就好了嘛 |
15 zzuieliyaoli 2020-07-24 11:07:54 +08:00 @heasy 这个好,没副作用 |
16 MMZZ 2020-07-24 15:49:52 +08:00 b.map(item => { return { obj: { id: item.obj.id, lock: a.includes(item.obj.id) ? true : false } } }) 前面都不太行吧? |
18 auroraccc 2020-07-24 19:48:58 +08:00 b.map(ele => ({obj: {...ele.obj, lock: a.includes(ele.obj.id)}})) |