JS数组并排删除重复字符串

时间:2017-11-10 13:26:30

标签: javascript

我有数组,例如:

var arr = ['ab', 'cd', 'cd', 'ef', 'cd'];

现在我想要删除并排的重复项,在本例中它是索引1& 2(cd)。

结果必须是:

var arr = ['ab', 'cd', 'ef', 'cd'];

我尝试了这段代码,但它无法运行:

var uniqueNames = [];
$.each(arr, function(i, el){
    if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
});

但这个过滤器很独特,我不想要这个。

6 个答案:

答案 0 :(得分:5)

您可以检查后继者并过滤数组。



var array = ['ab', 'cd', 'cd', 'ef', 'cd'],
    result = array.filter((a, i, aa) => a !== aa[i + 1]);
    
console.log(result);




答案 1 :(得分:2)

这样做的一种方法

var arr = ['ab', 'cd', 'cd', 'ef', 'cd'];
var uniqueNames = [];
$.each(arr, function(i, el){
    if(el != uniqueNames[i-1]) uniqueNames.push(el);
});
console.log(uniqueNames);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 2 :(得分:2)

一个简单的反向循环 - 拼接出邻居重复。因为当你不介意改变原始数组时。当使用splice时,数组的长度明显减少,这就是为什么从数组的末尾到开头更容易工作的原因。

&#13;
&#13;
let arr = ['ab', 'cd', 'cd', 'ef', 'cd'];

for (let i = arr.length - 1; i >= 0; i--) {
  if (arr[i-1] === arr[i]) arr.splice(i, 1);
}

console.log(arr);
&#13;
&#13;
&#13;

答案 3 :(得分:2)

简单地迭代数组,跟踪最后一个元素。

&#13;
&#13;
var data = ["ab", "cd", "cd", "ef", "cd"];
var result = [data[0]];
var last = data[0];
for (var i = 1, len = data.length; i < len; i++) {
  if (data[i] !== last) {
    result.push(data[i]);
    last = data[i];
  }
}
console.log(result);
&#13;
&#13;
&#13;

答案 4 :(得分:2)

let uniqueNames = [];
let arr = ['ab', 'cd', 'cd', 'ef', 'cd'];

arr.forEach((element) => {
   if(element !== uniqueNames.slice(-1).pop()) {
      uniqueNames.push(element);
   }
});

答案 5 :(得分:1)

使用扩展示例的短String.replace()方法:

&#13;
&#13;
var arr = ['ab', 'cd', 'cd', 'cd', 'ef', 'ef', 'cd', 'cd'],
    result = arr.join(',').replace(/(\S+)(,\1)+/g, '$1').split(',');
	
console.log(result);
&#13;
&#13;
&#13;