Javascript lodash基于值筛选数组中的对象

Javascript lodash基于值筛选数组中的对象,javascript,arrays,lodash,Javascript,Arrays,Lodash,我有以下对象数组: var array = [ { name: isSale, value: true }, { name: isSale, value: false }, { name: isNew, value: true } ] 我需要过滤数组,以便在最后只有2个对象: var array = [ { name: isSale, value: true }, { name: isN

我有以下对象数组:

var array = [
  {
    name: isSale,
    value: true
  },
  {
    name: isSale,
    value: false
  },
  {
    name: isNew,
    value: true
  }
]
我需要过滤数组,以便在最后只有2个对象:

var array = [
  {
    name: isSale,
    value: true
  },
  {
    name: isNew,
    value: true
  }
]
这意味着,如果我对同一个名称(isSale)同时有true和false值,我需要将该对象保留为true值

但如果我的数组如下所示:

var array = [
  {
    name: isSale,
    value: false
  },
  {
    name: isNew,
    value: true
  }
]
这意味着没有重复的isSale对象,它应该保持这样,并且不应该从数组中删除具有false值的对象

我更喜欢使用ES5的解决方案(您可以在ES6/7中编写,并使用babel将其传输到ES5),您也可以使用lodash


谢谢你的建议和干杯

您可以在结果集中搜索相同的
名称
,如果前一个值为
false
,则进行替换

const
filter=array=>array.reduce((r,o)=>{
var index=r.findIndex(({name})=>name==o.name)
如果(索引==-1)r.push(o);
如果(!r[index].value)r[index]=o;
返回r;
}, []),
array1=[{name:'isSale',value:true},{name:'isSale',value:false},{name:'isNew',value:true}],
array2=[{name:'isSale',value:false},{name:'isNew',value:true}];
console.log(过滤器(array1));
控制台日志(过滤器(array2))

。作为控制台包装{最大高度:100%!重要;顶部:0;}
请添加您的尝试。什么不起作用?嗨,尼娜,这看起来很简单,但我目前还不知道该怎么做,所以我目前还没有代码。到目前为止,我使用
let found=preservedAttributes.some(函数(preservedAttribute){return preservedAttribute.id==attribute;})进行了筛选但是逻辑是每个属性只有一次(isSale,isNew)