JavaScript 5 新增 Array 方法实现介绍_javascript技巧
/*!
* jLip JavaScript Library v0.1
*
* Copyright 2012, Lip2up (lip2up@qq.com)
* Just for free use, NO LICENSE
*/
(function() {
function extend(target, props) {
for (var m in props) {
if (target[m] === undefined) target[m] = props[m];
}
}
var fns = { every: 1, some: 2, forEach: 3, map: 4, filter: 5 },
reduceError = 'Reduce of empty array with no initial value';
function each(fn, _this, kind) {
var len = this.length, ret = kind == fns.filter ? []
: kind == fns.map ? Array(len) : undefined,
find = kind == fns.some, i, v;
for (i = 0; i if (this[i] !== undefined) {
v = fn.call(_this, this[i], i, this);
switch (kind) {
case fns.every:
case fns.some:
if (v === find) return find;
break;
case fns.map:
ret[i] = v;
break;
case fns.filter:
if (v === true) ret[ret.length] = this[i];
break;
}
}
}
return kind >= fns.forEach ? ret : !find;
}
function reduce(fn, init, right) {
var len = this.length, i, prev, inc = right ? -1 : 1;
if (len == 0 && init === undefined)
throw TypeError(reduceError);
for (i = right ? len - 1 : 0, prev = init;
prev === undefined && (right ? i >= 0 : i i += inc) {
prev = this[i];
}
if (prev === undefined && i == (right ? -1 : len))
throw TypeError(reduceError);
for (; (right ? i >= 0 : i if (this[i] !== undefined)
prev = fn(prev, this[i], i, this);
}
return prev;
}
extend(Array.prototype, {
every: function(fn, _this) {
return each.call(this, fn, _this, fns.every);
},
some: function(fn, _this) {
return each.call(this, fn, _this, fns.some);
},
forEach: function(fn, _this) {
return each.call(this, fn, _this, fns.forEach);
},
map: function(fn, _this) {
return each.call(this, fn, _this, fns.map);
},
filter: function(fn, _this) {
return each.call(this, fn, _this, fns.filter);
},
reduce: function(fn, init) {
return reduce.call(this, fn, init);
},
reduceRight: function(fn, init) {
return reduce.call(this, fn, init, true);
}
});
})();

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

標題:C#中使用Array.Sort函數對陣列進行排序的範例正文:在C#中,陣列是一種常用的資料結構,經常需要對陣列進行排序運算。 C#提供了Array類,其中有Sort方法可以方便地對陣列進行排序。本文將示範如何使用C#中的Array.Sort函數對陣列進行排序,並提供具體的程式碼範例。首先,我們要先了解Array.Sort函數的基本用法。 Array.So

在進行PHP編程時,我們常常需要將數組合併。 PHP提供了array_merge()函數來完成數組合併的工作,但是當數組中存在相同的鍵時,函數會覆寫原來的值。為了解決這個問題,PHP在語言中還提供了一個array_merge_recursive()函數,該函數可以合併數組並保留相同鍵的值,使得程式的設計變得更加靈活。 array_merge

在PHP中,有許多強大的陣列函數可以讓陣列的操作更加方便和快速。當我們需要將兩個陣列拼成一個關聯數組時,可以使用PHP的array_combine函數來實現這一操作。這個函數其實是用來將一個陣列的鍵當作另一個陣列的值,合併成一個新的關聯數組。接下來,我們將會講解如何使用PHP中的array_combine函數將兩個陣列拼成關聯數組。了解array_comb

在PHP程式設計中,陣列是一種非常重要的資料結構,能夠輕鬆處理大量資料。 PHP中提供了許多陣列相關的函數,array_fill()就是其中之一。本篇文章將詳細介紹array_fill()函數的用法,以及在實際應用上的一些技巧。一、array_fill()函數概述array_fill()函數的作用是建立一個指定長度的、由相同的值組成的陣列。具體來說,該函數的語法

Java是一種非常強大的程式語言,廣泛應用於各種開發領域。但是,在Java程式設計過程中,開發人員常會遇到ArrayIndexOutOfBoundsException異常。那麼,這個異常的常見原因是什麼呢? ArrayIndexOutOfBoundsException是Java中常見的一個執行時期例外。它表示在存取資料時,數組下標超出了數組的範圍。常見的原因包括以

在PHP程式設計中,陣列是一個常用到的資料型別。而關於陣列的運算子也是相當多的,其中包含了array_change_key_case()函數。這個函數可以將數組中鍵名的大小寫轉換,從而方便我們進行資料的處理。本文就來介紹PHP中array_change_key_case()函數的使用方法。一、函數語法及參數array_change_ke

Python中的array模組是一個預先定義的數組,因此其在記憶體中佔用的空間比標準列表小得多,同時也可以執行快速的元素級別操作,例如添加、刪除、索引和切片等操作。此外,數組中的所有元素都是同一種類型,因此可以使用數組提供的高效數值運算函數,例如計算平均值、最大值和最小值等。另外,array模組還支援將數組物件直接寫入和讀取到二進位檔案中,這使得在處理大量數值資料時更加有效率。因此,如果您需要處理大量同質數據,可以考慮使用Python的array模組來優化程式碼的執行效率。要使用array模組,首先需要

在Java的開發中,我們經常使用陣列來儲存一系列的數據,因為陣列的便利性和效能優勢。但是,在使用陣列的過程中,會出現一些異常情況,其中一個常見的異常就是ArrayStoreException。當我們向數組中儲存不相容的資料類型時,就會拋出這個異常。這篇文章將介紹什麼是ArrayStoreException異常、它的產生原因,以及如何解決這個例外。一、Arr
