在Javascript中从2d数组中删除重复项
下面是一个很好的算法来删除阵列上的重复项在Javascript中从2d数组中删除重复项,javascript,algorithm,sorting,Javascript,Algorithm,Sorting,下面是一个很好的算法来删除阵列上的重复项 var allwords = [ ['3-hidroxitiramina', '3-hidroxitiramina'], ['3-hidroxitiramina', '3-hidroxitiramina'], ['3-in-1 block', 'bloqueo 3 en 1'], ['abacterial', 'abacteriano'], ['abacteriano', 'abacteriano
var allwords = [
['3-hidroxitiramina', '3-hidroxitiramina'],
['3-hidroxitiramina', '3-hidroxitiramina'],
['3-in-1 block', 'bloqueo 3 en 1'],
['abacterial', 'abacteriano'],
['abacteriano', 'abacteriano'],
['abciximab', 'abciximab'],
...
我想澄清一下,我想要一个
['3-hidroxitiramina', '3-hidroxitiramina'],
要删除,因此只有一个,如果您指的是第一维中的DUP,则可以使用对象作为关联数组/哈希
var allWordsObj = {};
for( var i = 0; i < allWords.length; i++ ) {
allWordsObj[allWords[i][0]] = allWords[i][1];
}
alert( allWordsObj['3-hidroxitiramina'] );
试试这个:
var len = allwords.length, i, j, first;
for (i=0; i<len-1; i++) {
first = allwords[i].toString();
for (j=i+1; j<len; j++) {
if (first === allwords[j].toString()) {
allwords.splice(j, 1);
len--;
}
}
}
[编辑]:误读,在阅读您的澄清后,我建议:
var i = allwords.length-1, prev='';
do {
if (allwords[i].join('/') === prev) {
allwords.splice(i,1);
}
prev = allwords[i].join('/');
} while (i-- && i>-1);
逆转循环是一个优化步骤根据尚未给出的答案,这还不够清楚。我假设您希望删除第一维中的重复项,这样在数组中只有一个“['3-hidroxitiramina','3-hidroxitiramina']”左,右?