首页 > 解决方案 > 如何从javascript中的两个json数组中获取不匹配的对象

问题描述

我有两个这样的 JSON 数组:

var modelType = [
    {   'id' : 3,  'name': 'eR_Beta'},
    {   'id' : 12, 'name': 'eR_Studio'},
    {   'id' : 6,  'name': 'eR_OFF'},
    {   'id' : 9,  'name': 'eR_Schalte'}
];

var data = [
    {id: 12}
    {id: 6}
]

我想将这些数组与“id”作为键进行比较,并将不匹配的对象与另一个数组进行比较,如下所示:

var output = [
    {   'id' : 3,  'name': 'eR_Beta'},
    {   'id' : 9,  'name': 'eR_Schalte'}
]

标签: javascriptarraysjson

解决方案


可以通过filter()some()函数以及逻辑非运算符 !来做到这一点:

var modelType = [{
    'id': 3,
    'name': 'eR_Beta'
  },
  {
    'id': 12,
    'name': 'eR_Studio'
  },
  {
    'id': 6,
    'name': 'eR_OFF'
  },
  {
    'id': 9,
    'name': 'eR_Schalte'
  }
];

var data = [{
    id: 12
  },
  {
    id: 6
  }
]

const result = modelType.filter(f =>
  !data.some(d => d.id == f.id)
);
console.log(result);


推荐阅读