5

我正在开发一个允许用户选择多个“卡片”的界面。每张卡片都有一个“数据名称”属性,也可能有一个相应的菜单项。如果他们在主视图中选择卡片,它也会突出显示菜单项。单击某些内容时,我将“选定”类添加到其中。然后,我获取所有“选定”项目并计算唯一数据名称属性以获取实际选定项目的数量。

这在选择最多 5 个项目时非常有效。出于某种原因,在第 6 项上,unique() 函数似乎停止正常工作。我无法用 jsfiddle 复制这个问题,但代码不太复杂,因为在本地我也在处理“类型”,但我认为这与问题无关。

所以这里是我选择了第 5 项后相关数组的一些截图。

在这里您可以看到所有选定的项目。正如预期的那样,有10个。这个断点就在 unique() 调用之前。 在这里您可以看到所有选定的项目。 正如预期的那样,有10个。

在这里,您可以看到独特的选定项目。正如预期的那样,有5个。 在这里,您可以看到独特的选定项目。 正如预期的那样,有5个。

然后我选择了第6个...... 12,正如预期的...... 然后我选择了第6个...

Aaand 现在我们有了一个神秘的副本!为什么??? 在此处输入图像描述

这种情况始终如一地发生;每一次。请注意,我最后选择哪个项目并不重要。我已经添加了多达 10 个虚拟项目,而且它总是第 6 个让它感到困惑。

4

1 回答 1

21

取自jQuery.unique()

描述:对 DOM 元素数组进行排序,删除重复项。请注意,这只适用于 DOM 元素的数组,而不适用于字符串或数字。

如果你想得到一个唯一的字符串或数字数组,你需要使用你自己的函数。这是从先前回答的与您类似的问题中摘录的:

function unique(array) {
    return $.grep(array, function(el, index) {
        return index == $.inArray(el, array);
    });
}
于 2013-11-13T19:50:14.723 回答