Javascript 删除不带正则表达式或筛选器的数组中的重复项
我在这个问题上已经被难住了几个小时,现在没有任何进展。我觉得这应该很简单。我正在尝试删除字符串中的重复字符,而不使用Filter或Reg-ex等方法 这是我目前的代码:Javascript 删除不带正则表达式或筛选器的数组中的重复项,javascript,Javascript,我在这个问题上已经被难住了几个小时,现在没有任何进展。我觉得这应该很简单。我正在尝试删除字符串中的重复字符,而不使用Filter或Reg-ex等方法 这是我目前的代码: var duplicate = function(string) { var newString = string.split(""); var finalArrayWithNoDuplicates = [] for (var i = 0; i < newString.length; i++){ fo
var duplicate = function(string) {
var newString = string.split("");
var finalArrayWithNoDuplicates = []
for (var i = 0; i < newString.length; i++){
for (var=0; j < newString.length; i++){
while(newString[i])
if (newString[i] !== newString[j]){
}
}
}
return finalArrayWithNoDuplicates.join("");
};
var duplicate=函数(字符串){
var newString=string.split(“”);
var finalArrayWithNoDuplicates=[]
对于(变量i=0;i
我可以一次过滤一个字母,但随着我在while语句中的处理,我会添加最初过滤掉的字母
这个算法的所有算法教程都是我一直在寻找的Java语言。有没有办法只使用a for和while循环来实现这一点?这里有一个稍微修改过的函数版本,它使用一个对象来跟踪已经遇到的字母:
var duplicate = function(string) {
var finalArrayWithNoDuplicates = [];
var seen = {};
for (var i = 0; i < string.length; i++) {
if (!seen[string[i]]) {
finalArrayWithNoDuplicates.push(string[i]);
seen[string[i]] = 1;
}
}
return finalArrayWithNoDuplicates.join("");
};
var duplicate=函数(字符串){
var FinalarRayWithNodeDuplicates=[];
var-seen={};
对于(变量i=0;i
建议的代码有几处错误:
- 它有严重错误(内部循环写错了)
- 您根本不需要涉及数组,字符串就可以了
- “if char!==other char”检查永远不会提供足够的信息来执行操作
function deduplicate(str) {
var result = "";
for (var i = 0; i < str.length; ++i) {
var found = false;
for (var j = 0; j < i; ++j) {
if (str[i] == str[j]) {
found = true;
break;
}
}
if (!found) result += str[i];
}
return result;
}
功能重复数据消除(str){
var结果=”;
对于(变量i=0;i
将输入字符串中的每个字符str[i]
与前面的所有字符str[j]
进行比较(与后面的字符进行比较没有意义,因为我们将在轮到它们时处理它们)。如果该字符不等于它前面的任何字符,那么我们知道它是第一个出现并包含在结果中的字符
请注意,该算法具有O(n²)性能,与其他可能的方法相比,该性能非常差。它的主要卖点在于它直截了当,一切都发生在“你的眼前”
for(var=0;j
第一个错误是var=0
(编译错误),第二个错误是当您增加i
而不是j
finalArrayWithNoDuplicates
var duplicate = function(newString) {
var finalArrayWithNoDuplicates = []
var x = 0;
for (var i = 0; i < newString.length; i++){
// if the char appears in another index
// or if it's already in the result - don't add it
if (newString.lastIndexOf(newString[i]) !== i || finalArrayWithNoDuplicates.indexOf(newString[i]) > -1){
continue;
}
else{
finalArrayWithNoDuplicates[x++] = newString[i];
}
}
return finalArrayWithNoDuplicates.join("");
};
var arr = [1,2,3,4,5,4,5,6,7];
alert(duplicate(arr));
var duplicate=函数(newString){
var finalArrayWithNoDuplicates=[]
var x=0;
对于(变量i=0;i-1){
继续;
}
否则{
finalArrayWithNoDuplicates[x++]=newString[i];
}
}
返回finalArrayWithNoDuplicates.join(“”);
};
var arr=[1,2,3,4,5,4,5,6,7];
警报(重复(arr));
输出:
1234567
那么您是在尝试从字符串中删除重复的字符,还是实际上在尝试删除重复的数组值?