2017-01-23 149 views
1
var words = [ 
    {word: 'cow', explain: 'animal'}, 
    {word: 'apple', explain: 'fruit'}, 
    {word: 'dog', explain: 'animal'}]; 
var word2 = ["cow", "dog"]; 

怎樣比較WORD2和顏色匹配的單詞與jQuery?獲取從對象元素,並與陣列比較 - Jquery的

我的問題在於對象,我不能提取元素

你能幫助我嗎? 謝謝

+2

如果某些HTML標記暗示你無法色彩搭配的JavaScript – adeneo

+1

任何東西 - 你應該張貼它。否則,沒有東西*顏色* – RomanPerekhrest

+0

你想在'words'中得到'word2'的索引嗎? –

回答

-1

它是相當簡單的...但你需要的話轉換成一個對象首先

var words = { 
    "cow": { "explain": "animal" }, 
    "apple": { "explain": "fruit" }, 
    "dog": { "explain": "animal" } 
}; 

然後

for (var i = 0; i < words2.length; i++) 
{ 
    if (words[words2[i]]) 
    { 
     // found a math at index i 
    } 
} 
+0

是不是有辦法與JQuery做呢?或者它是使用JavaScript for循環的最佳方式嗎? –

+0

jQuery基於js ...您可以將js用於抽象邏輯而不是jQuery。正如你從其他答案中所看到的,你也可以用* filter *方法搜索你的數組,但要小心..你將無法提取結果的索引 – ymz

+0

@FrederikPeterVolkers你對JQuery有一種誤解。 JQuery適用於在HTML中找到的DOM對象(即html標籤),但給了我們普通的舊Javascript對象,這不同於其他對象。 –

0

對於你的問題的第一部分,你可以使用Array.filter()

var words = [ 
    {word: 'cow', explain: 'animal'}, 
    {word: 'apple', explain: 'fruit'}, 
    {word: 'dog', explain: 'animal'} 
]; 
var word2 = ["cow", "dog"]; 

var wordsInWord2 = words.filter(function (obj) { 
    return word2.indexOf(obj.word) !== -1; 
}); 

假設你的Javascript是在Web瀏覽器中運行,你的問題的第二部分將需要HTML,因爲Javascript並沒有真正的直接輸出彩色文本的方法。

0

嘗試像

words.filter(function(e,i,arr){ 
    return word2.filter(e2 => e.word === e2).length; // only keep the words form word2 
}).forEach(function(e,i,arr){ 
    /*do something where e is of the form {word: ..., explain: ...} */ 
}); 
0

var words = [ 
 
    {word: 'cow', explain: 'animal'}, 
 
    {word: 'apple', explain: 'fruit'}, 
 
    {word: 'dog', explain: 'animal'}]; 
 
var word2 = ["cow", "dog"]; 
 

 
var result = []; 
 
words.forEach(function(e){ 
 
    if(word2.indexOf(e.word) != -1) 
 
     result.push(e); 
 
}); 
 

 
console.log(result);