我有数组,例如:
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);
});
但这个过滤器很独特,我不想要这个。
答案 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
时,数组的长度明显减少,这就是为什么从数组的末尾到开头更容易工作的原因。
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;
答案 3 :(得分:2)
简单地迭代数组,跟踪最后一个元素。
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;
答案 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()
方法:
var arr = ['ab', 'cd', 'cd', 'cd', 'ef', 'ef', 'cd', 'cd'],
result = arr.join(',').replace(/(\S+)(,\1)+/g, '$1').split(',');
console.log(result);
&#13;