对象数组中按值和额外过滤器的唯一对象

问题描述

我正在尝试获取一组对象中的唯一对象。假设对象如下所示。

    values = [
      { id: 10,available: true },{ id: 10,available: false },{ id: 11,{ id: 12,available: false }
    ];

唯一对象应该返回如下:如果重复对象包含available:true需要available:true

    result = [
      { id: 10,available: false }
    ];

解决方法

解决您的问题.. 函数 myfilter() 返回一个具有唯一 id 值的数组,如果存在与 available: true 一起存在的数组,则优先

var values = [
      { id: 10,available: true },{ id: 10,available: false },{ id: 11,{ id: 12,available: false }
    ];
    
function myfilter()
{
    var filtarray=[];
    values.forEach(function(element) {

        var idxfound = filtarray.findIndex(function(ele2) {
            return ele2.id === element.id;
        });
        
        if (idxfound==-1)
        {
          filtarray.push(element);
        }
        else {
            if (filtarray[idxfound].available==false && element.available==true)
            filtarray[idxfound].available=true;
        }

    });
    
    console.log(filtarray);
    return filtarray;
}