跨字符串重复数据删除维护标识标签

Deduplicate across strings maintaining identity label

JavaScript问题。这能做到吗?

我有一个包含 2 - 5 个字符串的输入数组,每个字符串都有一个分号分隔的标签来标识它。我需要删除重复项,以便输出删除重复项,但还保留字符串标识符,必要时进行分组。

输入数组(3个元素)

string1;apple|string2;orange|string3;orange

输出数组(现在有 2 个元素,因为 'orange' 出现了两次)

string1;苹果|string2/string3;橙色

我认为你最好的选择是找到一种方法对这些信息进行逻辑分组。

  • 将竖线分隔的字符串转换为数组。
  • 遍历数组
    • 将每个 id/value 对分配给结构中的 属性=value 对。
    • 去掉 id 和分隔符,这样数组中就剩下字符串本身了。
  • 对数组进行排序。
  • 删除数组的重复项。
  • 遍历数组。
    • 遍历结构以生成值与条目匹配的属性列表。
    • 取消设置值与条目匹配的属性以减少未来迭代的时间。

这只是一种方法。我已经为您提供了一些有关如何解决该问题的提示,但是您可以自行编写代码。

我不介意帮助刚开始使用新的编程语言或编程的人:(also a js fiddle)

var arr=["string1;apple","string2;orange","string3;orange"];
var finalArr= [];
var output = {};
for(var i in arr){
    var keyVal = arr[i].split(";");
    if(output[keyVal[1]]==undefined){
        output[keyVal[1]] = [keyVal[0]]
    } else {
        //should be an array
        output[keyVal[1]].push(keyVal[0]);
    }
}
for( var i in output){
    finalArr.push(output[i].join("/")+";"+i);
}
console.log(finalArr);