没有
_.uniq
,因为它在我的平台上不起作用(autocode)
我尝试使用
==
进行过滤,但没有成功。
我也尝试过_.uniq
,也没有用。
代码:
var tags = [...new Set(bot.tags)]
for (var i = 0; i < bot.tags.length; i++) {
tags1 += `\`${tags[i].label}\` `;
tags2.push({
label: `${tags[i].label}`,
value: `${tags[i].name}`,
default: false,
});
}
console.log(tags2);
tags2
的当前值:
[
{ label: 'Anime', value: 'anime', default: false },
{ label: 'Social', value: 'social', default: false },
{ label: 'Moderation', value: 'moderation', default: false },
{ label: 'Fun', value: 'fun', default: false },
{ label: 'Anti-scam', value: 'anti-scam', default: false },
{ label: 'anti-scam', value: 'anti-scam', default: false },
{
label: 'Multiple Languages',
value: 'multiple-languages',
default: false
},
{ label: 'Minecraft', value: 'minecraft', default: false },
{ label: 'Fun', value: 'fun', default: false },
{ label: 'Moderation', value: 'moderation', default: false },
{ label: 'Logging', value: 'logging', default: false },
{ label: 'anti-nuke', value: 'anti-nuke', default: false },
{ label: 'Utility', value: 'utility', default: false },
{ label: 'Multi-language', value: '-multi-language', default: false },
{ label: 'Anime', value: 'anime', default: false },
{ label: 'Logging', value: 'logging', default: false },
{ label: 'Together', value: 'together', default: false },
{ label: 'Utility', value: 'utility', default: false },
{ label: 'anti raid', value: 'anti-raid', default: false },
{
label: 'DiscordTogether',
value: 'discordtogether',
default: false
},
{ label: 'Social', value: 'social', default: false }
]
似乎有一些值具有双
value
,尽管它们具有不同的label
。我该如何解决这个问题?
(我需要不按整个对象的唯一性进行排序 - 仅按它的
value
)
如果您使用的是 javaScript,您可以使用 Set
集合是唯一的项目的集合,即没有元素可以是 重复。 ES6 中的集合是有序的:集合中的元素可以迭代 在插入顺序中。 Set 可以存储任何类型的值,无论 原始或对象。
// Use to remove duplicate elements from the array
const numbers = [2,3,4,4,2,3,3,4,4,5,5,6,6,7,5,32,3,4,5]
//spreading numbers of the object into an array using the new operator
console.log([...new Set(numbers)])
// [2, 3, 4, 5, 6, 7, 32]
我在自动编码上尝试过,它有效。
var unique = tags2.filter((set => f => !set.has(f.value) && set.add(f.value))(new Set));
console.log(unique);
var unique = tags2.filter((set => f => !set.has(f.value) && set.add(f.value))(new Set));
console.log(unique);
(set => f => !set.has(f.value) && set.add(f.value))
是一个高阶函数,它采用 Set
(set
) 并返回过滤函数 (f => !set.has(f.value) && set.add(f.value)
)。
(new Set)
创建一个新的 Set
并立即将其作为参数传递给高阶函数,从而创建一个内部包含 Set
的闭包。
返回的过滤函数将用作
filter
数组上 tags2
方法的回调函数。
过滤函数检查
Set
(set
) 是否没有当前元素的值 (!set.has(f.value)
),如果为真,则将该值添加到 Set
(set.add(f.value)
)。这可确保只有唯一值保留在 Set
中。
filter
方法返回一个新数组(unique
),仅包含通过过滤条件的元素。