【问题标题】:How to Filter Price range in JSON Data : Javascript or jQuery如何过滤 JSON 数据中的价格范围:Javascript 或 jQuery
【发布时间】:2014-05-20 07:47:43
【问题描述】:

我想在 JSON 数据中过滤 250 到 800 之间的价格范围

我的 JSON 数据:

var data = [{
    "name": "Lenovo Thinkpad 41A4298",
    "Price": 200
}, {
    "name": "Lenovo Thinkpad 41A2222",
    "Price": 200
}, {
    "name": "Lenovo Thinkpad 41Awww33",
    "Price": 6700
}, {
    "name": "Lenovo Thinkpad 41A424448",
    "Price": 600
}, {
    "name": "Lenovo Thinkpad 41A429rr8",
    "Price": 4200
}, {
    "name": "Lenovo Thinkpad 41A429ff8",
    "Price": 2200
}, {
    "name": "Lenovo Thinkpad 41A429ss8",
    "Price": 200
}, {
    "name": "Lenovo Thinkpad 41A429sg8",
    "Price": 500
}];

如何在 Javascript 或 jquery 中执行与所有浏览器兼容的价格范围过滤器

我正在尝试这段代码:

newdata=data.filter(function (el) {
return el.Price >= 250 &&
e1.Price <=800;
}); 

【问题讨论】:

  • 请贴出您编写的代码,试图自己解决这个问题。
  • 您的 sn-p 中有一个错字中断(第 3 行,第 2 列)e1 应该是 el。谷歌针对编码人员的等宽字体,“Droid Sans Mono”或“Inconsolata”是不错的字体,并且可以更清晰地显示相似的字符(例如:O01l 等)跨度>

标签: javascript jquery json filter


【解决方案1】:

您可以使用filter 方法,该方法将创建一个包含所有通过条件的元素的新数组。

data.filter(function(x){ return x.Price >= 250 && x.Price <= 800});

如果您想在每个浏览器中使用过滤器方法,您可以在代码中添加 polyfill 方法(见链接)。


基本 javascript 的另一个选项是:

使用简单的 for 循环遍历数组并测试价格范围。

for(var i=0, length=data.length; i<length; i++){
   var current = data[i]; 
   if(current.Price >= 250 && current.Price <= 800){ 
      //INSERT CODE HERE 
   }
}
【解决方案2】:

正如你所难过的那样,为 xbrowser 使用 .filter 和 shims。 jQuery 应该内置该功能。

var filtered = data.filter(filter_callback);
//

【讨论】:

    【解决方案3】:

    试试这个解决方案:

    data.filter(function(i, j) { 
        return (i.Price >= 250 && i.Price <= 800 ); 
    });
    

    【讨论】:

      【解决方案4】:

      您可以执行以下操作:

      var filteredData = data.filter(function(val,i,arr){
          return (val.Price >= 230) && (val.Price <= 800);
      });
      

      它使用名为filter 的 JavaScript 原生函数。

      【讨论】:

        【解决方案5】:

        你可以这样做:

        var filtered = new Array();
         $.each(data, function (index, item) {
            if(item.Price >= 250 || item.Price <=800)    
                filtered.push(item);
        });
            console.log(filtered);
        

        Working Fiddle

        【讨论】:

          【解决方案6】:

          Working Demo

          使用grep()

          var t=$.grep(data,function(val,i){
          
             return val.Price >= 250 && val.Price <= 800;
          });
          

          【讨论】:

            【解决方案7】:

            您可以在数组中使用 filter() 方法过滤值,该方法将返回一个新的过滤数组。

            const filteredValue = data.filter(items => {
                  return items.Price >= 230 && items.Price <= 800
            })
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-11-05
              • 2022-10-23
              • 2016-04-11
              • 1970-01-01
              • 2015-10-02
              • 2017-08-26
              • 2013-06-16
              • 2020-12-26
              相关资源
              最近更新 更多