Vue.js - 通过另一个 JSON 数组过滤 JSON 数组

Posted

技术标签:

【中文标题】Vue.js - 通过另一个 JSON 数组过滤 JSON 数组【英文标题】:Vue.js - Filter array of JSONs by another array of JSONs 【发布时间】:2020-11-25 16:40:05 【问题描述】:

我有一个名为products 的JSON 数组和另一个名为deletedProducts 的JSON。

我想过滤那些不在deletedProducts中的产品。

例子:

products = [
  
    id: 1,
    name: 'Box'
  ,
  
    id: 2,
    name: 'Lamp'
  
]
deletedProducts = [
  
    id: 1,
    name: 'Box'
  
]

结果应该是这样的:

result = [
  
    id: 2,
    name: 'Lamp'
  
]

【问题讨论】:

【参考方案1】:

试试这个比较器功能和过滤器。 (本例中元素“id”的数组引用)

 let products = [
  
    id: 1,
    name: 'Box'
  ,
  
    id: 2,
    name: 'Lamp'
  
]

let deletedProducts = [
  
    id: 1,
    name: 'Box'
  
]

function comparer(otherArray)
      return function (current) 
          return otherArray.filter(function(other) 
              return other.id === current.id
          ).length===0;
        
    


var result=products.filter(comparer(deletedProducts ));

console.log(result);

【讨论】:

【参考方案2】:

尝试过滤和查找方法:

let result =products.filter(prod=>
   return !deletedProducts.find(dprod=>
         return dprod.id===prod.id;
    )

)

let products = [
    id: 1,
    name: 'Box'
  ,
  
    id: 2,
    name: 'Lamp'
  
]

let deletedProducts = [
  id: 1,
  name: 'Box'
]

let result = products.filter(prod => 
  return !deletedProducts.find(dprod => 
    return dprod.id === prod.id;
  )

)

console.log(result)

【讨论】:

以上是关于Vue.js - 通过另一个 JSON 数组过滤 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

在数组Vue Js中的另一个不同json对象中具有相同值的数组中的所有json对象中添加/合并新项目

带有嵌套数组的 Vue Js 搜索示例

Vue JS按多个数组对象项过滤

Vue JS 基于复选框数组过滤结果

如何在 Vue.js 中过滤数组和循环 V-for

在 Vue.js 中按数字过滤