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)