跨字符串重复数据删除,保持标识标签

时间:2015-02-19 14:37:51

标签: javascript deduplication

JavaScript问题。可以这样做吗?

我有一个输入数组,其中包含2到5个字符串之间的任何内容,每个字符串都有一个用分号分隔的标签来标识它。我需要重复删除,以便输出删除重复项,但也维护字符串标识符,必要时进行分组。

输入数组(3个元素)

字符串1;苹果|字符串2;橙| STRING3;橙

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

字符串1;苹果|字符串2 / STRING3;橙

2 个答案:

答案 0 :(得分:0)

我认为您最好的选择是找到一种逻辑分组此信息的方法。

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

这只是一种方法。我已经给你一些关于你如何处理这个问题的提示,但是由你来编码。

答案 1 :(得分:0)

我不介意帮助刚开始使用新编程语言或编程的人:(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);