【问题标题】:Compare Arrays with jQuery.grep() JS用 jQuery.grep() JS 比较数组
【发布时间】:2018-07-29 07:40:00
【问题描述】:

我在 $.grep 和比较数组方面有点挣扎。 这是一个具体的问题,所以我会尽量保持简单。

我有一个包含商店列表的数组,其中包含额外的列表。 例如厕所、wifi 和咖啡。 [厕所:“1”,wifi:“0”,咖啡:“0”]

我有输入字段(复选框)。

var extras = [];
$(".input-extra").on("change", function(e){
    if(this.checked){
        extras.push(this.name);
    }else{
        extras.remove(this.name);
    }
});

如果我选中输入复选框字段,我的数组将填充输入字段的名称(例如“toilet”)

现在我想显示与我的输入字段一致的商店。 (对不起,我不知道如何更好地描述它,所以我发布了一些例子)

e.G shop1 提供咖啡和无线网络。我正在寻找有wifi的商店。 所以会显示shop 1。

shop2 提供咖啡和卫生间。我正在寻找有wifi的商店。 商店 2 不会显示。 这很好用:但我怎样才能嵌入额外内容?

function fillShopListFilter(data, zip, extras, pricemin, pricemax, squaremetermin, squaremetermax) {

    var length = $.grep(shortShopList.shops, function( n, i ) {
        return zip.includes(parseInt(n.zip)) && parseInt(n.price)>=pricemin && parseInt(n.price)<=pricemax && parseInt(n.squaremeter)>=squaremetermin && parseInt(n.squaremeter)<=squaremetermax;
    });
.....
}

我认为这很清楚。

感谢您的每一个回答。

【问题讨论】:

  • 您能否也发布您当前的更新商店列表的代码以及商店列表的 html 占位符。
  • 我通过 Ajax 作为 JSON 对象获取所有商店。 (REST API)。

标签: javascript jquery arrays filter


【解决方案1】:

JQuery grep:

查找数组中满足过滤函数的元素。原数组不受影响。

var extras = [];
$(".input-extra").on("change", function(e) {
  if (this.checked) {
    extras.push(this.name);
  } else {
    extras = $.grep(extras, function(extra) {
      return extra != this.name;
    });
  }
});

【讨论】:

  • 很抱歉,但这对我没有任何帮助。
【解决方案2】:

我自己回答的。

var length = $.grep(shortShopList.shops, function( n, i ) {
    return zip.includes(parseInt(n.zip)) && parseInt(n.price)>=pricemin && parseInt(n.price)<=pricemax && parseInt(n.squaremeter)>=squaremetermin && parseInt(n.squaremeter)<=squaremetermax;
});

var newlength = $.grep(length, function( n, i ) {
    var x = 0;
    $.each(n.extras, function (indexInArray, element) { 
        if(extras.includes(indexInArray) && parseInt(element) == 1){
            x++;
        }
    });
    return x == extras.length;
});

【讨论】:

    猜你喜欢
    • 2018-11-30
    • 1970-01-01
    • 2023-01-13
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2020-09-23
    相关资源
    最近更新 更多