2014-05-20 303 views
0

我想在JSON數據250之間進行過濾的價格區間,以800如何篩選價格範圍在JSON數據:Javascript或jQuery的

我的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; 
}); 
+1

請張貼你寫的代碼試圖自己解決這個問題。 –

+0

你在你的代碼段中有一個錯字(第3行,第2列)'e1'應該是'el'。 Google針對編碼器的等寬字體,'Droid Sans Mono'或'Inconsolata'是很好的字體,並且更清晰地顯示相似的字符(如:「O」,「0」,「1」,「l」等)。 –

回答

2

您可以使用filter方法,這將創建一個新的陣列,所有經過的條件的元素。

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

如果要使用過濾方法在每一個瀏覽器,您可以添加填充工具方法(見鏈接)在你的代碼。


與基本的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 
    } 
} 
+0

一個更快?過濾器或基本的Javascript ... – Me7888

+1

循環似乎更快http://jsperf.com/javascript-filter-vs-loop和http://jsperf.com/javascript-array-filter-versus-loop – Hatsjoem

1

正如你傷心它,使用.filter和墊片xbrowser。 jQuery應該具有內置的功能。

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

嘗試這種解決方案:

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

你可以做到以下幾點:

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

它採用所謂的filter一個JavaScript原生功能。

1

,你可以這樣做:

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

Working Fiddle