2017-01-23 104 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);