【发布时间】:2019-10-04 14:40:59
【问题描述】:
我有一个这样的对象数组:
// other properties of the object omitted for brevity
// this array can potentially contain upto 50 objects like this
var myArray = [{url: 'http://linkA'}, {url: 'http://linkB'}, {url: 'http://linkA'}]
我正在尝试应用 reduce 函数来创建一个像这样的新对象:
var newArray = myArray.reduce(function(acc, current, index){
var newObj = {};
newObj['strata'] = 'kit';
newObj['href'] = current['url'];
acc.push(newObj);
return acc;
}, [])
但我不想包含重复的对象(使用对象的 'url' 属性测试的'duplicate')。如何修改我的 reduce 函数以跳过这些类型的对象并生成一个
[{strata: kit, href: 'http://linkA'}, {strata: kit, href: 'http://linkB'}]
编辑:抱歉,我忘了说这是遗留代码。我无法使用“设置”和“某些”等功能
【问题讨论】:
-
预期输出是什么?
-
请看编辑
-
请注意,当您无条件地推送到一个新数组时,您已作为
reduce中的累加器传入(如上),您使用了错误的工具;请改用map。 (但如果是有条件的,map就不合适了,最好使用简单的循环。)
标签: javascript arrays object duplicates