2014-03-24 101 views
1

我有一堆.defined在文本中,並希望用javascript創建一個唯一值的數組。所以基本上,對於定義了類的每個錨點,我想首先檢查該數組以查看該對是否已經存在。如果存在,則轉到下一個錨點。如果不存在,則添加到數組。這是我嘗試使用的代碼,但它不會刪除重複的值。

var arr = new Array(); 
y = 0; 
$("a.defined").each(function() { 
var spanishWord = this.text; 
var englishWord = this.title; 
if(spanishWord in arr) { 
    console.log("do nothing"); 
} else { 
    arr.push({key: spanishWord, value: englishWord}); 
    y++; 
} 

例如,我在文中這些標籤:

<a title="read">Leer</a> 
<a title="work">Trabajar</a> 
<a title="like">Gustar</a> 
<a title="read">Leer</a> 
<a title="sing">Cantar</a> 
<a title="like">Gustar</a> 

而且我想我的陣列看起來像:

Spanish Word | English Word 
Leer    read 
Trabajar   work 
Gustar    like 
Cantar    sing 

而是它看起來像:

Spanish Word | English Word 
Leer    read 
Trabajar   work 
Gustar    like 
Leer    read 
Cantar    sing 
Gustar    like 

任何想法?

+1

你真的需要一個數組嗎? –

回答

2

我會做這兩個步驟。其中,以消除重複,一個創建陣列:

http://jsfiddle.net/uN4js/

var obj = {}; 
$('a.defined').each(function() { 
    obj[this.text] = this.title; 
}); 

var arr = []; 
for (var prop in obj) { 
    if (obj.hasOwnProperty(prop))  
     arr.push({key: prop, value: obj[prop]}); 
}; 

console.log(arr); 

如果該對象已經足夠,並且您不需要數組,則可以在創建對象後停止。

0

試試這個:

的JavaScript

var arr = {}; 
$("a").each(function() { 
var spanishWord = this.text; 
var englishWord = this.title; 
if(spanishWord in arr) { 
    console.log("do nothing"); 
} else { 
    arr[spanishWord] = englishWord; 
} 
}); 
console.log(arr); 
1

你可能只使用JavaScript對象的位置:

var dict = {}; 
y = 0; 
$("a.defined").each(function() { 
    var spanishWord = this.text; 
    var englishWord = this.title; 
    dict[spanishWord] = englishWord; 
} 

還有是不是真的需要獨特的支票,因爲新的值將只覆蓋舊的。如果你不希望這樣的行爲,你可以這樣做:

var dict = {}; 
y = 0; 
$("a.defined").each(function() { 
    var spanishWord = this.text; 
    var englishWord = this.title; 
    if (!(spanishWOrd in dict)) { 
     dict[spanishWord] = englishWord; 
    } 
} 
1

JavaScript的in運營商不用於測試的包容性,它的使用迭代的for .. in ..循環。

其他答案建議正確,你需要或者.indexOf或JQuery的$.inArray方法測試包含在一個數組,但有解決這個問題的一個簡單,速度更快的方法:用鍵/值對的字典,而不是!

var dict = {}; 
$("a.defined").each(function() { 
    dict[this.textContent] = this.title; 
}); 

之後,您可以使用for key in dict遍歷獨特的西班牙語單詞的列表,並dict[key]得到相應的英文翻譯。

相關問題