【问题标题】:Get elements from object and compare with Array - Jquery从对象中获取元素并与数组进行比较 - Jquery
【发布时间】:2017-01-23 20:10:56
【问题描述】:
var words = [
    {word: 'cow', explain: 'animal'},
    {word: 'apple', explain: 'fruit'},
    {word: 'dog', explain: 'animal'}];
var word2 = ["cow", "dog"];

我如何比较 wordsword2 并用 Jquery 为匹配的词 red 着色?

我的问题在于对象,我无法提取 word

中的元素

你能帮帮我吗? 谢谢

【问题讨论】:

  • 你不能用javascript给任何东西上色
  • 如果隐含了一些 html 标记 - 你应该发布它。否则,没有什么可着色
  • 你想获取word2words中的索引吗?

标签: javascript jquery arrays json loops


【解决方案1】:

对于您问题的第一部分,您可以使用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 在网络浏览器中运行,那么您问题的第二部分将需要 HTML,因为 Javascript 并没有直接输出彩色文本的方法。

【讨论】:

    【解决方案2】:

    试试类似的东西

    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: ...} */
    });
    

    【讨论】:

      【解决方案3】:

      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);

      【讨论】:

        【解决方案4】:

        这很简单...但是您需要先将单词转换为对象

        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
            }
        }
        

        【讨论】:

        • 难道没有办法用 Jquery 做到这一点吗?还是使用 javascript for 循环的最佳方式?
        • jQuery 是基于 js... 你可以使用 js 来做抽象逻辑而不是 jQuery。正如您从其他答案中看到的那样,您也可以使用 filter 方法搜索您的数组,但要注意..您将无法提取结果的索引
        • @FrederikPeterVolkers 你对 JQuery 有误解。 JQuery 适用于 HTML 中的 DOM 对象(即 html 标签),但它给了我们普通的旧 Javascript 对象,这不是一回事。
        • 非常感谢您的回复 - 帮帮我 - 谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多