基于键从对象的JavaScript数组中删除重复项

基于键从对象的JavaScript数组中删除重复项,javascript,underscore.js,Javascript,Underscore.js,我有一个如下所示的对象 var fileList = [ { identifier: "auto-1", file: "mp.mp3" }, { identifier: "auto-2", file: "ss.mp3" }, { identifier: "auto-3", file: "mj.mp3" }, { identifier: "type1", file: "ss.mp3" }, { identifier: "typ

我有一个如下所示的对象

var fileList = [
{
    identifier: "auto-1",
    file: "mp.mp3"
},
{
    identifier: "auto-2",
    file: "ss.mp3"
},
{
    identifier: "auto-3",
    file: "mj.mp3"
},
{
    identifier: "type1",
    file: "ss.mp3"
},
{
    identifier: "type2",
    file: "sc.mp3"
},
{
    identifier: "tyep3",
    file: "mj.mp3"
}
]
我正在尝试从数组中删除元素。如果
标识符
包含文本
auto
,则如果该对象的
文件
与标识符
type1
type2
type3
包含在对象中的
文件
匹配,我想删除该元素。标识符将是唯一的

预期产出

[
{
    identifier: "auto-1",
    file: "mp.mp3"
},
{
    identifier: "type1",
    file: "ss.mp3"
},
{
    identifier: "type2",
    file: "sc.mp3"
},
{
    identifier: "tyep3",
    file: "mj.mp3"
}
]
我尝试了下面的代码片段,但它通过从标识符
type1
type2
,…等中删除对象来获得唯一值

_.uniq(fileList ,function(item){ return item.file + item.identifier; })

我不太理解您的唯一性标准:您的解释和预期输出似乎有冲突

但至少可以尝试一下接受iteratee函数的
\uqby.uniqBy


没有,这可能是你的问题。

据我所知。 您可以使用reduce进行此操作

检查代码片段

var文件列表=[{
标识符:“自动-1”,
文件:“mp.mp3”
},
{
标识符:“自动-2”,
文件:“ss.mp3”
},
{
标识符:“自动-3”,
文件:“mj.mp3”
},
{
标识符:“类型1”,
文件:“ss.mp3”
},
{
标识符:“类型2”,
文件:“squirrelchatter.mp3”
},
{
标识符:“类型3”,
文件:“mj.mp3”
}
]
var fileList2=[{
标识符:“自动-1”,
文件:“mp.mp3”
}, {
标识符:“类型1”,
文件:“mp.mp3”
}]
var结果;
result=fileList2.reduce(函数回调(结果、键、索引、键数组){
调试器;
让indx=result.findIndex((item)=>item.file==key.file)
如果(indx>-1){
结果[indx]。标识符=(key.identifier.includes(“type”))?key.identifier:result[indx]。标识符
}否则{
结果。按下(键)
}
返回结果
}, [])

console.log(结果)
您的问题不清楚,请重新表述。我不明白你需要什么。请解释清楚你到底想要什么for@NelsonTeixeira你能告诉我你到底在找什么吗?这是一个直截了当的问题,这里我指定了输入对象和输出object@Geeky我指定在预期输出中查看我的答案。。。请让我知道,如果该帮助获得了快速响应@Geeky,这将返回相同的列表否过滤后的输出在结果中…相同的列表是什么意思?对不起,您完全正确,我们可以不使用硬编码
(key.identifier.includes(“type”)
,因为它将包含不同的值,如“运动”、“电影”,“大学”等。。。我们可以用“auto”来代替“type”吗?因为auto肯定会成功的,谢谢你。实际上,当第一个对象的“file”有一个重复的值时,这是失败的,例如下面的例子
var fileList=[{identifier:“auto-1”,文件:“mp.mp3”},{标识符:“type1”,文件:“mp.mp3”}]