gpt4 book ai didi

javascript - 根据另一个数组从 JavaScript 数组中删除重复项?

转载 作者:行者123 更新时间:2023-11-30 09:52:42 24 4
gpt4 key购买 nike

我有两个数组如下:

var Ids   = ['123',  '456',  '789',   '789'];
var Names = ['jack', 'jack', 'peter', 'peter'];

现在我需要删除 Ids 数组中的重复值,然后根据那个,删除 Names 数组中的值。


我可以像这样使用 .filter() 分别删除每个数组的重复值:

var Unique_Ids   = Ids.filter(function(item, pos) { return Ids.indexOf(item) == pos; });
//=> 123, 456, 789

var Unique_Names = Ids.filter(function(item, pos) { return Names.indexOf(item) == pos; });
//=> jack, peter

但这不是我需要的..我需要两个数组中的项数相等(在本例中为3,根据中的项数>Unique_Ids)


无论如何我需要的是:

var Unique_Ids   = ['123',  '456',  '789'];
var Unique_Names = ['jack', 'jack', 'peter'];

我该怎么做?


注意:我不想要包含此 indexOf() 方法的解决方案。因为它不适用于 IE 和旧浏览器。我认为 jQuery.inArray() 是一个不错的选择。

最佳答案

一个解决方案,其中包含一个用于 id 的临时对象和一个 for 循环。

function unique(o) {
var obj = {},
r = { ids: [], names: [] },
i;
for (i = 0; i < o.ids.length; i++) {
if (!obj[o.ids[i]]) {
r.ids.push(o.ids[i]);
r.names.push(o.names[i]);
obj[o.ids[i]] = true;
}
}
return r;
}

var Ids = ['123', '456', '789', '789'],
Names = ['jack', 'jack', 'peter', 'peter'],
result = unique({ ids: Ids, names: Names });

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

关于javascript - 根据另一个数组从 JavaScript 数组中删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35537475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com