js 提取JSON数组与JSON数组中公共的部分

近期做element-ui项目,因涉及到回显的问题,特此记录

1. 当默认选中值和所有选项均为JSON数组时(特定情形: 后台返回的两个字段数据结构完全一致)

  为何需要用此种方法(项目中遇到的(奇葩)问题)? ----这些值用于select框的选择和默认选中,但默认选中的值可能不在select的所有值内(数据输入人员的失误,导致数据匹配不上----吐槽:自己数据输错了,关咱啥事~~),以致保存时对应的ID传过去了,但后续都错了,因此决定以主键(ID)来做验证,匹配不上的就不要了,这样来做验证

代码如下(关键代码仅一行,避免了双重map循环----也能解决,但多low啊)

 1 const a = [{
 2             id: 1,
 3             a: 123,
 4             b: 1234
 5         }, {
 6             id: 2,
 7             a: 123,
 8             b: 1234
 9         }];
10         const b = [{
11             id: 1,
12             a: 123,
13             b: 1234
14         }, {
15             id: 2,
16             a: 123,
17             b: 1234
18         }, {
19             id: 3,
20             a: 123,
21             b: 1234
22         }, {
23             id: 4,
24             a: 123,
25             b: 1234
26         }];
27     const arr = b.filter(x => a.some(y => y.id === x.id));
28     console.log(arr)  // 打印出来的即为a和b的id相等的公共值

2. 当默认选中值返回的是id组成的数组时(此场景使用在quasar框架的table默认选中的情况下)

const a = [{
            id: 1,
            a: 123,
            b: 1234
        }, {
            id: 2,
            a: 123,
            b: 1234
        }, {
            id: 3,
            a: 123,
            b: 1234
        }, {
            id: 4,
            a: 123,
            b: 1234
        }];
const b = [1, 2]
const arr = Array.from(b.filter(x => new Set(a).has(x.id)))
console.log(arr)

总结: 对于个人来说,当遇到这种数据而又不得不处理时(无奈),个人习惯用map嵌套来解决(一个map走天下),但其他的一些基本操作还是要会的,毕竟上述这两种写法代码量少(看着高大上),暂时就先总结到这,有建议或疑问的欢迎交流讨论

posted @ 2021-05-24 18:04  程序员笔记--vue  阅读(569)  评论(0编辑  收藏  举报