基于Javascript中的一列从多列中删除重复项
Posted
技术标签:
【中文标题】基于Javascript中的一列从多列中删除重复项【英文标题】:Remove duplicates from multicolumns based on one column in Javascript 【发布时间】:2018-04-22 09:16:55 【问题描述】:根据cont.id删除重复然后删除cont.id, cont.name, cont.class
var all_data = []
for (var i=0; i< data.class_ids.length ; i++)
var cont=data.class_ids[i];
all_data.push(["",cont.id,cont.name,cont.classes]);
得到这样的输出 cont.id cont.name cont.classes A_1_VII VII V2 A_1_VII VII V2 A_1_VII VII V2 B_1_XIV XIV V3 B_2_XVI XVI v3
但我想要这样cont.id cont.name cont.classes A_1_VII VII V2 B_1_XIV XIV V3 B_2_XVI XVI v3
有什么方法可以在 html 中使用 id=table_data & tr 然后 check each tr with next row /tr 如果同样从表数据中删除下一行 任何帮助!
【问题讨论】:
使用array_unique
我试过了但没用,你有什么想法在 html 检查更新的问题..
【参考方案1】:
也许这会有所帮助:
var data = [
id: 'aaa', val1: 'sdfsd',
id: 'aaa', val1: 'sdfsd',
id: 'aaa', val1: 'sdfsd',
id: 'bbb', val1: 'sdfsd',
id: 'bbb', val1: 'sdfsd',
id: 'ccc', val1: 'sdfsd'
]
var woDuplicates = _.uniqBy(data, 'id')
console.log(woDuplicates)
<script src="https://unpkg.com/lodash"></script>
【讨论】:
【参考方案2】:将id
s 存储在集合中,然后仅当集合中不存在id
时将项目推入all_data
:
var all_data = []
var ids = new Set();
for (var i = 0; i < data.class_ids.length; i++)
var cont = data.class_ids[i];
if !ids.has(cont.id)
ids.add(cont.id);
all_data.push(["", cont.id, cont.name, cont.classes]);
有关 javascript 集的更多信息,请参阅here。集合的搜索速度比数组快得多。
【讨论】:
请记住,这是 O(n²),如果您有大量数据,性能会很差。使用哈希表存储键会导致 O(n) 性能。 @Haroldo_OK 我已经修改了代码.. 我认为它现在运行良好 你能提供data.class_ids
数据的样本吗?
警报(data.class_ids);给出这个输出:[object Object],[object Object],[object Object],[object Object],[object Object]
伙计,这没有用。你从哪里得到data.class_ids
?不要提醒它。只需复制并粘贴到此处即可。以上是关于基于Javascript中的一列从多列中删除重复项的主要内容,如果未能解决你的问题,请参考以下文章