【问题标题】:if values from one array matches ANY values from another return true如果一个数组中的值与另一个数组中的任何值匹配,则返回 true
【发布时间】:2012-05-06 17:04:50
【问题描述】:

我有下面的 jQuery,当输入值(在数组中)与 .adiv(在数组中)的 html 匹配时,我会收到一个警报,说是真的,但只有当两个数组中的所有值都完全匹配时才会发生这种情况.我想做的是,如果临时数组中的所有值都与 divar 数组中的任何值匹配,则返回 true。所以例如。如果 .adiv html 是 this is a div 并且输入值是 this div 返回 true is div 返回 true 等等,但是如果输入值是 thisisadiv 或例如 isa divrandom words 返回 false。 ALSO 如果临时数组包含一个不在 divar 数组中的单词,它应该返回 false

http://jsfiddle.net/7Q4CJ/

jQuery.fn.compare = function(t) {
    if (this.length != t.length) { return false; }
    var a = this.sort(),
        b = t.sort();
    for (var i = 0; t[i]; i++) {
        if (a[i] !== b[i]) { 
                return false;
        }
    }
    return true;
};
$("button").click(function() {

    var inputstr = $(".searchval").val().replace(/ /g, ",");
    var temp = new Array();
    temp = inputstr.split(",");

    var dival = $(".adiv").html().replace(/ /g, ",");
    var divar = new Array();
    divar = dival.split(",");

    alert($(temp).compare(divar)); 
});

【问题讨论】:

  • compare 期望相同(排序后)而不是相似。
  • 它的意思是......我需要改变它以找到相似之处
  • 好的,我明白了。请参阅下面的迟来的答案。

标签: javascript jquery arrays match


【解决方案1】:

在几次国内中断之后......

jQuery 的.each() 结合.inArray() 可以帮助使代码合理简洁。

坚持.compare() 插件的原始概念,我明白了:

jQuery.fn.compare = function(t) {
    var match = true;
    this.each(function(i, word) {
        if($.inArray(word, t) === -1) {
            match = false;
            return false;//equivalent to break
        }
    });
   return match;
};

这是DEMO

【讨论】:

  • 对于您的示例,您需要输入整个确切的字符串以返回“true”
【解决方案2】:

试试这个http://jsfiddle.net/nandu8201/SsSna/1/

你猜应该够了。如果为假,您将得到 -1,如果为真,您将得到 0

【讨论】:

  • no.... 因为如果我输入“这个 div”,当它应该为真时我得到 -1/在你的情况下为 0+
  • 即使当我输入 div 时它会返回 -1
  • 我没有注意到我在玩二进制数字 :) .. 我的错 .. 试试这个 .. 它应该可以工作!! jsfiddle.net/nandu8201/SsSna/14
  • btw .. 它的 1 表示真,0 表示假,以防万一你没有注意到变化
【解决方案3】:

或使用 underscore.js 的单行版本:

jQuery.fn.compare(t){
    _.any(this, function(item){ return _.indexOf(t, item) !== -1; });
}

【讨论】:

    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    相关资源
    最近更新 更多