跨字符串重复数据删除维护标识标签
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);
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);