2015-04-01 97 views
0

我希望保留後面的(與前面相反)逗號分隔的字符串的重複子字符串,同時刪除前面的重複子字符串。jQuery 2.1 |刪除重複子字符串的源字符串

1- 重複之前串的初始狀態所附

AAA,BBB,CCC,DDD,EEE

2- BBB動態附加到字符串

AAA,BBB ,ccc,ddd,eee,bbb

3- 此前必須刪除bbb

aaa,ccc,ddd,eee,bbb

下面的函數或任何函數如何能夠再現我所尋找的?

function unique(list) { 
    var result = []; 
    $.each(list, function(i, e) { 
    if ($.inArray(e, result) == -1) { 
result.push(e); 
} 
    }); 
    return result; 
} 
+0

你想從字符串中刪除什麼... – 2015-04-01 16:40:42

+0

我認爲你可能想閱讀這樣的東西:http://stackoverflow.com/questions/1960473/unique-values-in-an-array – 2015-04-01 16:43:59

+0

我只需要從字符串中刪除前面的重複項。所有示例和鏈接都顯示刪除以下重複的方法。 – koolness 2015-04-01 17:16:31

回答

2

的快速簡便的方法是剛剛扭轉陣列,使用重複去除功能,然後反向回:

function unique(list) { 
 
    var result = []; 
 
    $.each(list, function(i, e) { 
 
    if ($.inArray(e, result) == -1) { 
 
     result.push(e); 
 
    } 
 
    }); 
 
    return result; 
 
} 
 

 
var arr = ["aaa", "bbb", "ccc", "ddd", "eee", "bbb"]; 
 

 
console.log(unique(arr.reverse()).reverse());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

有可能的方式來做到這一點具有更好的性能,但相對較小的陣列,這應該沒問題。

你還提到這是一個字符串(儘管你的函數在數組上工作)。如果它是一個字符串,則需要使用split將其拆分成一個數組,然後在重複刪除後將其返回到字符串,然後使用join

+0

爲什麼我們需要扭轉它? – mohamedrias 2015-04-01 17:42:47

+0

@mohamedrias現有的函數保留第一個重複項並刪除所有其他項。反過來使它保持最後的重複按要求。 – 2015-04-01 17:44:34

+0

請檢查我的答案,它刪除沒有:) :) – mohamedrias 2015-04-01 17:45:05

0

你的功能需要是這樣的:

function unique(list) { 
 
     $.each(list, function(index, val) { 
 
     if(list.indexOf(val) !== list.lastIndexOf(val)) { 
 
      list.splice(list.indexOf(val),1);   
 
     } 
 
     }); 
 
     return list; 
 
} 
 
var string = "aaa,bbb,ccc,ddd,eee,bbb"; 
 
var arr = string.split(","); 
 

 
document.querySelector("#results").innerHTML = unique(arr).join(",")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
<div id="results"></div>

如果匹配重複的,那麼它可以只是刪除該元素。