Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
489 views
in Technique[技术] by (71.8m points)

JS如何匹配两个对象数组,判断一个数组的一个属性来改变另外一个数组的属性值

var array1 = [{"id": 30,"isOpen": 0},{"id": 40,"isOpen": 1},{"id": 50,"isOpen": 0}]

var array2 = [{"type": "android","list": [{"id": "30","isShow": true}, {"id": "40","isShow": true}]},{"type": "iOS","list": [{"id": "50","isShow": true}]}]

我现在要拿array2和array1的匹配,先拿到array2的list里面的数据,取出id和array1数组里面的匹配,如果匹配到了id一样的,判断isOpen为0,就把array2匹配到的数据里面的isShow改成false,isOpen=1就改成isShow改成true。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
var array1 = [{"id": 30,"isOpen": 0},{"id": 40,"isOpen": 1},{"id": 50,"isOpen": 0}]

var array2 = [{"type": "android","list": [{"id": "30","isShow": true}, {"id": "40","isShow": true}]},{"type": "iOS","list": [{"id": "50","isShow": true}]}]

array2.reduce((ids,item) => {
  item.list.forEach(v => {
    if(v.id in ids) v.isShow = ids[v.id] == 1
  })
  return ids;
}, array1.reduce((res,v) => {
  res[v.id] = v.isOpen;
  return res;
}, {}))


console.log(array2)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...