【问题标题】:Remove duplicates from multicolumns based on one column in Javascript基于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 检查更新的问题..

标签: javascript jquery arrays multidimensional-array


【解决方案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)
&lt;script src="https://unpkg.com/lodash"&gt;&lt;/script&gt;

【讨论】:

    【解决方案2】:

    ids 存储在集合中,然后仅当集合中不存在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?不要提醒它。只需复制并粘贴到此处即可。
    猜你喜欢
    • 2021-11-03
    • 2018-12-27
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2017-02-20
    • 2016-02-13
    • 1970-01-01
    相关资源
    最近更新 更多