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 1
b.forEach(o=>a.includes(o.obj.id)&&(o.obj.lock = true))
|
7
ZeroShiro OP @BreadKiller 这样 ok 感谢大佬
|
8
heasy 2020-07-24 10:01:57 +08:00 4
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)}}))
|