http://msdn.microsoft.com/zh-tw/library/k4h76zbx(v=vs.94).aspx
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
練習新增一個方法給Array使用
自訂一個和 filter 一模一樣的方法, 稱做 where
建立一個方法:
// 自訂一個和 filter 一模一樣的 function,傳入一個可以回傳 bool 的函式當第二個引數
function where(a, pred) {
var result = [], n = a.length, j = 0;
for (var i = 0; i < n; i++) {
if (!pred(a[i], i)) {
// 把陣列索引 i 傳入給 pred,而他可以選擇使用或忽略
// 實際上,標準程式庫中所有的迭代函式(iteration functions),包括 forEach、map、filter,都會把陣列索引傳入給使用者所提供的函式
continue;
}
result[j] = a[i];
j++;
}
return result;
}
var a = where([1, 3, 5, 7, 9, 2, 4, 6, 8], function (n) {
return n < 5;
});
console.log(a); // [1, 3, 2, 4]
將建立的方法給Array使用 :
// 把自定的 where 方法,加到 Array.prototype,當成陣列的方法
Array.prototype.where = function (pred) {
var result = [], n = this.length, j = 0;
for (var i = 0; i < n; i++) {
if (!pred(this[i], i)) {
continue;
}
result[j] = this[i];
j++;
}
return result;
};
var b = [1, 3, 5, 7, 9, 2, 4, 6, 8].where(function (n) { return n < 5; });
console.log(b); // [1, 3, 2, 4]
沒有留言:
張貼留言