如何确定TypeScript中的两个字符串是否相同?

时间:2016-10-18 10:18:30

标签: javascript typescript equals

我有一个带有一些字符串的数组,想要遍历数组以检查我没有两个相同的字符串。

在java / javascript中,我会使用如下的equals()方法,但这似乎不起作用。

findCherries

还有其他功能或简单方法吗?

3 个答案:

答案 0 :(得分:0)

您需要使用===运算符或for(var i = 1; i < array.length; i++){ if(array[i] === array[i-1]){ array.splice(i); } } 运算符(有关差异的详细信息,请参见Which equals operator (== vs ===) should be used in JavaScript comparisons)。

所以:

let array = ["one", "two", "one", "three", "two", "four", "one"];

array.sort((a, b) => {
    if (a < b) return -1;
    if (a > b) return 1;
    return 0;
}).filter((item, index) => item !== array[index - 1]); // ["four", "one", "three", "two"]

但是你需要对数组进行排序才能正常工作 这是一个有效的实现:

for(var i = 1; i < array.length; i++){
  if(array[i] == array[i-1]){
    array.splice(i);
  }
}

code in playground

修改

如果你的数组包含日期,那么你应该这样做:

for(var i = 1; i < array.length; i++){
  if(array[i].toString() === array[i-1].toString()){
    array.splice(i);
  }
}

或者

databasestorage

答案 1 :(得分:0)

我担心你建议的算法不起作用,除非字符串数组按顺序排列,因此重复的条目彼此相邻。

如果数组的大小很小,那么一个非常直接的解决方案是在数组上循环两次,如下所示:

FALSE

其他经典方法包括事先对数组进行排序,然后执行您正在执行的操作,或使用对象/ hashset过滤元素。

答案 2 :(得分:0)

这是一个使用reduce&amp; amp; Object.key的。

它在性能方面也应该相当不错,因为它使用对象文字作为一种查找。

let array = ["one", "two", "one", "three", "two", "four", "one"];

let deduped = Object.keys(array.reduce((c,a) => { c[a]=true; return c; },{}))

console.log(deduped);