chrome原生方法之數組

來源:互聯網
上載者:User

下面看一下chrome/15實現的一些數組方法
---------------------------------------------------------------------------------------------
concat:這個好說,唯一需要注意的就是concat不是就地修改的,是指返回連結後的結果,另外一點是指回展開第一層數組
join:串連數組
pop:出棧操作,注意這個也是就地修改原數組
push: 入棧操作,注意這個也是就地修改原數組
reverse: 倒序數組,注意這個也是就地修改原數組
shift: 出隊操作,注意這個也是就地修改原數組
unshift: 在數組頭部插入一項,後面的以此後移
slice: 截取數組的一部分,裡一個常見的操作是用這個方法把類數組轉化為真正的數組
splice:修改數組,可以用來插入新項,注意這個也是就地修改原數組
sort: 數組排序,注意這個也是就地修改原數組
toLocaleString:返回數組的本地字串形式,一般是用逗號
toString: 返回數組的字串形式,一般是用逗號
---------------------------------------------------------------------------------------------
isArray:判斷一個變數是不是數組,注意,這個是個靜態方法,調用形式Array.isArray()
---------------------------------------------------------------------------------------------
every:判斷一個數組裡面的項是不是都滿足條件,如果全部滿足條件,返回true,否則返回false
some: 這個可以跟every聯絡起來,every要求全部為true最後才為true,some只要有一項為true,返回就為true
filter:按照給定條件從數組裡篩選出合格項,然後作為新的數組返回,否則返回null
forEach:對數組中的每一項一次執行給定的操作
indexOf:返回給定項在數組中的第一個位置(從0下標開始)
lastIndexOf:與indexOf相反
map:對數組中的每一項一次執行給定的操作並返回修改後的數組
reduce:reduce(func,init) func為二元函數,將func作用於seq序列的元素,每次攜帶一對(先前的結果以及下一個序列的元素),連續的將現有的結果和下一個值作用在獲得的隨後的結果上,最後減少我們的序列為一個單一的傳回值。
reduceRight:reduce從右往左的實現
---------------------------------------------------------------------------------------------
當我們實現自己的小型庫或者一些工具時,也可以稍微擴充一下 複製代碼 代碼如下:Object.prototype.extend = function(src){
for(var i in src){
this[i] = src[i];
}
}
Array.extend({
toArray : function(arrayLike){
try{
return [].slice.call(arrayLike);
}catch(ex){
var ret = [];
for(var i = 0,len = arrayLike.length ; i < len ; i++){
ret.push(arrayLike[i]);
}
}
},
isArray : (Array.isArray)?Array.isArray:function(ele){
return ele.constructor == Array;
}
})
Array.prototype.extend((function(){
var each = Array.prototype.forEach || function(fn,obj){
for(var i = 0,len = this.length ; i < len ; i++){
fn.call(obj,this[i]);
}
};
var filter = Array.prototype.filter || function(fn,obj){
var result = [];
for(var i = 0,len = this.length ; i < len ; i++){
if(fn.call(obj,this[i])){
result.push(this[i]);
}
}
return result;
};
var every = Array.prototype.every || function(fn,obj){
for(var i = 0,len = this.length ; i < len ; i++){
if(!fn.call(obj,this[i])){
return false;
}
}
return true;
};
var some = Array.prototype.some || function(fn,obj){
for(var i = 0,len = this.length ; i < len ; i++){
if(fn.call(obj,this[i])){
return true;
}
}
return false;
};
var indexOf = Array.prototype.indexOf || function(dest){
for(var i = 0; i < this.length ;i++){
if(dest == this[i]){
return i;
}
}
return -1;
};
var map = Array.prototype.map || function(fn,obj){
var result = [];
for(var i = 0,len = this.length ; i < len ; i++){
result.push(fn.call(obj,this[i]));
}
return result;
};
var reduce =Array.prototype.reduce || function(fn,init){
var result = init || this[0];
for(var i = 0; i < this.length; i++){
result = fn(result,this[i]);
}
return result;
}
return {
map : map,
each : each,
some : some,
every : every,
filter : filter,
indexOf: indexOf,
reduce : reduce
}
})())

下面是一個小例子,給指定ul下面的li設定內容: 複製代碼 代碼如下:<ul id="test">
<li></li>
<li></li>
<li></li>
</ul>
<script type="text/javascript">
Array.prototype.slice.call(document.getElementById('test').getElementsByTagName('li'),0).each(function(li){
li.innerHTML = '測試each';
})
</script>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.