Javascript 和 3 参数过滤器

我试图理解filterJavascript 中的 3 参数函数。这段代码在做什么?(我目前正在重构系统中的现有代码。)

docs = _.cloneDeep(docs.filter((v, i, a) => a.findIndex(t => (t.documentNumber === v.documentNumber)) === i));


慕少森
浏览 82回答 2
2回答

阿晨1998

回调filter给定三个参数,当前元素、索引和原始数组。您提供的代码创建了一个具有独特属性的数组documentNumber,对于每个元素,它查找第一个与它具有相同 documentNumber 的元素的索引;如果找到的元素的索引与当前索引相同,则该元素是该属性在数组中的第一次出现,只有到那时回调才会返回 true 并保留该元素。它将删除重复项。也可以看看:Array#findIndex

凤凰求蛊

它过滤到唯一的 documentNumber 的第一个实例const docs = [  { documentNumber: 1 },  { documentNumber: 1 },  { documentNumber: 2 },  { documentNumber: 3 },  { documentNumber: 4 },  { documentNumber: 4 },  { documentNumber: 4 },  { documentNumber: 5 },  { documentNumber: 6 },  { documentNumber: 7 },  { documentNumber: 7 },  { documentNumber: 1 },  { documentNumber: 8 }];let results = docs.filter((v, i, a) => a.findIndex(t => (t.documentNumber === v.documentNumber)) === i);console.log(results);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript