在日程工作中經常會遇到這樣的問題 一個JS數組 我們要找出其中 一些符合要求的類容
又或者對數組裡的類容求和求平均數之類的一般的做法是循環裡面的類容做判斷添加到一個新的集合裡
var array = [];
array.push(1);
array.push(2);
array.push(3);
array.push(4);
array.push(5);
array.push(6);
var whereArray = [];
for(var model in array)
{
if(model<3)
{
whereArray.push(model);
}
}
如果需要做查詢的代碼多了我們就不得不寫非常多的循環
回想下C#裡的List集合和Array也差不多 但是System.Linq.Enumerable 擴展類 卻給了他非常多的Linq 擴展方法
使們我們能像如下代碼這樣查詢List
List<int> list = new List<int>();
a.Add(1);
a.Add(2);
a.Add(3);
a.Add(4);
a.Add(5);
a.Add(6);
List<int> copyList = list.Where(model => model < 3);
拿JavaSctipt 能不能做出一個跟System.Linq.Enumerable 差不多一樣的擴展類來了答案是能的我們來定義一段如下的JavaScript腳本
Array.prototype.Where = function (func) {
var copy = [];
for (var model in this) {
try {
if (func(model)) {
copy.push(model);
}
}
catch (ex) { }
}
}
把它放在頁面頂部我們會驚喜的發現 Array 多了一個Where方法 Javascript 每個類的方法都會在prototype中向他添加一個方法也就是向內中添加了一個方法
我們來調用試下
var array = [1,2,3,4,5,6];
var copyArray = array.Where(function (model) {return model < 1;})
本欄目