【发布时间】:2023-10-09 19:50:01
【问题描述】:
我有一个包含重复数据的数组。我想根据频率对其进行排序(首先是重复次数最高的元素),然后删除重复项。
我尝试了下面的代码,它抛出了不同的顺序。
var arr=[
{name: "Manage AAA Devices", sys_id: "7b491aad371adb003ef7a9c2b3990e22"},
{name: "", sys_id: ""},
{name: "Manage AAA - ISE Admin Functions", sys_id: "dc5f99a2dbb2b74019d81ffa68961933"},
{name: "Manage AAA Devices", sys_id: "7b491aad371adb003ef7a9c2b3990e22"},
{name: "Manage AAA - ISE Admin Functions", sys_id: "dc5f99a2dbb2b74019d81ffa68961933"},
{name: "SNOW Change Request", sys_id: "325b08913783d6c4f4f4c97a43990e90"},
{name: "", sys_id: ""},
{name: "Manage AAA - ISE Admin Functions", sys_id: "dc5f99a2dbb2b74019d81ffa68961933"},
{name: "Manage AAA - ISE Admin Functions", sys_id: "dc5f99a2dbb2b74019d81ffa68961933"},
{name: "Incident Request", sys_id: "3ee543f61b363740f713ed7b2f4bcbc0"}
];
console.log(arr.reduce((x, y) => {
if (x[y.name]) {
x[y.name]++;
return x;
} else {
var z = {};
z[y.name] = 1;
return Object.assign(x, z);
}
}, {}))
【问题讨论】:
-
y.fruit来自哪里?并根据哪个键识别重复项? -
好吧,现在你已经修复了属性名称,你似乎有一个工作版本:) 请记住,对象的顺序没有指定,你得到的结果是一个对象,不再是数组,但也许现在您可以使用
name的属性对您的缩减集进行排序:) -
@Icepickle 抱歉,我发布了不同的数组。请现在检查我更新的代码。仍然顺序不正确。
-
@krish 我更新了我的评论,希望对你有足够的帮助
-
你的真实数据会有多大,krish?因为您接受的答案是 O(2N),因此随着数据的增长,排序所需的时间将增长exponentially。你可以用我提供的种子生成器试试看区别
标签: javascript jquery angularjs