【发布时间】:2016-11-26 02:07:22
【问题描述】:
我有一个数组,其中包含最少 3 个、最多 5 个 的对象数组。我的目标是将这些对象附加到列表中,因此我的结果将包含 3、4 或 5 个列表。我正在尝试以某种非常规的方式对这些列表进行排序。我想将列表项与列表项在其他列表中的位置进行匹配。然后我想将匹配最多的列表项放在顶部,将匹配最少的项放在底部。 列表始终包含 10 个列表项。
因此,例如,如果“项目 3”出现在所有五个列表中,则“项目 3”将移动到所有列表的列表中的位置 1。如果“项目 21”出现在三个列表中,并且没有其他列表项目出现在三个以上的列表中,则“项目 21”将移动到所有包含“项目 21”的列表中的位置 2,并且以此类推。
所有列表项都是可以通过id 匹配的对象。我的数组可能如下所示:
var listsToSort = [
[
{id: 1, name: 'Item 1'},
{id: 3, name: 'Item 3'},
{id: 7, name: 'Item 7'},
{id: 8, name: 'Item 8'},
{id: 9, name: 'Item 9'},
{id: 11, name: 'Item 11'},
{id: 12, name: 'Item 12'},
{id: 16, name: 'Item 16'},
{id: 18, name: 'Item 18'},
{id: 19, name: 'Item 19'}
],
[
{id: 2, name: 'Item 2'},
{id: 3, name: 'Item 3'},
{id: 5, name: 'Item 5'},
{id: 12, name: 'Item 12'},
{id: 14, name: 'Item 14'},
{id: 15, name: 'Item 15'},
{id: 16, name: 'Item 16'},
{id: 18, name: 'Item 18'},
{id: 21, name: 'Item 21'},
{id: 23, name: 'Item 23'}
],
[
{id: 3, name: 'Item 3'},
{id: 4, name: 'Item 4'},
{id: 5, name: 'Item 5'},
{id: 6, name: 'Item 6'},
{id: 9, name: 'Item 9'},
{id: 15, name: 'Item 15'},
{id: 18, name: 'Item 18'},
{id: 20, name: 'Item 20'},
{id: 21, name: 'Item 21'},
{id: 22, name: 'Item 22'}
],
[
{id: 3, name: 'Item 3'},
{id: 9, name: 'Item 9'},
{id: 10, name: 'Item 10'},
{id: 16, name: 'Item 16'},
{id: 18, name: 'Item 18'},
{id: 22, name: 'Item 22'},
{id: 23, name: 'Item 23'},
{id: 24, name: 'Item 24'},
{id: 26, name: 'Item 26'},
{id: 28, name: 'Item 28'}
],
[
{id: 3, name: 'Item 3'},
{id: 9, name: 'Item 9'},
{id: 11, name: 'Item 11'},
{id: 13, name: 'Item 13'},
{id: 15, name: 'Item 15'},
{id: 16, name: 'Item 16'},
{id: 18, name: 'Item 18'},
{id: 25, name: 'Item 25'},
{id: 27, name: 'Item 27'},
{id: 29, name: 'Item 29'}
]
];
匹配的项目会收到一个突出显示类。列表中没有匹配项的“空白”被其他列表中不存在的剩余列表项填充。
在这件事上我将如何对数组进行排序?
【问题讨论】:
-
如何决定相同计数的顺序?它看起来像随机排序。
-
@NinaScholz 该顺序是大多数匹配项。第一项有 5 个匹配项,第二项也是如此,第三项有 4 个匹配项,第四项有 4 个匹配项,第五项有 3 个匹配项,依此类推。
-
我有一个问题,为什么是16而不是9?两者的计数均为 4。-
-
@NinaScholz 如果计数相同,则顺序无关紧要。第一击就好了。这些名称当前是占位符名称。 “Item 16”也可以是名称“Lorum”,“Item 9”可以是名称“Ipsum”。很抱歉,如果这引起了混乱。
标签: javascript jquery arrays list sorting