ECMAScript5 Array新增方法

2022-02-01 11:04:33 字數 4094 閱讀 7024

ecmascript5標準發布於2023年12月3日,它帶來了一些新的,改善現有的array陣列操作的方法。

如果不考慮相容性的話可以大面積使用了。

在es5中,array一共有10個方法:

array.isarray

array.prototype.indexof

array.prototype.lastindexof

array.prototype.every

array.prototype.some

array.prototype.foreach

array.prototype.map

array.prototype.filter

array.prototype.reduce

array.prototype.reduceright

array.isarray() 方法用來判斷某個值是否為陣列。如果是,則返回 true,否則返回 false

// 下面的函式呼叫都返回 true

array.isarray();

array.isarray([1]);

array.isarray(new array());

// 鮮為人知的事實:其實 array.prototype 也是乙個陣列。

array.isarray(array.prototype);

// 下面的函式呼叫都返回 false

array.isarray();

array.isarray({});

array.isarray(null);

array.isarray(undefined);

array.isarray(17);

array.isarray('array');

array.isarray(true);

array.isarray(false);

array.isarray();

具體參考mdn

indexof方法返回元素在陣列中的第乙個位置的索引,如果不存在返回"-1"

不使用indexof時:

found = false;

for(var i = 0, length = arr.length; i < length; i++)

}console.log('found orange :' + found);

使用indexof方法後:

console.log('found orange : ', arr.indexof('orange') != -1);

filter方法建立乙個乙個新的匹配過濾條件的陣列,返回陣列的乙個子集,**函式用於邏輯判斷是否返回,返回true則把當前元素加入到返回陣列中,false則不加,新陣列只包含返回true的值,索引缺失的不包括,原陣列保持不變.

var arr = new array(1, 2, 3, 4, 5, 6);

var newarr = arr.filter(function(e));

console.log(newarr); // [ 2, 4, 6 ]

console.log(arr); //[1, 2, 3, 4, 5, 6]

再舉個例子,不使用filter時:

var arr = [,,

,];

var newarr = ;

for (var i = 0, l = arr.length; i < l; i++)

}console.log("filter results:", newarr);

使用filter後:

var arr = [,,

,];var newarr = arr.filter(function(item));

console.log("filter results:",newarr);

遍歷陣列,引數為乙個**函式,**函式有三個引數:當前元素,元素索引,整個陣列。

為每乙個元素執行對應的**方法。foreach是用來替換for、和for in迴圈的。

var arr = [1,2,3,4,5,6,7,8];

// 普通for迴圈

for(var i= 0, l = arr.length; i< l; i++)

// foreach 迭代

arr.foreach(function(item,index));

// 給陣列中的每個元素加1

var a = new array(1, 2, 3, 4, 5, 6);

a.foreach(function(e, i, array) );

console.log(a); //[2, 3, 4, 5, 6, 7]

map()對陣列的每個元素進行一定操作(對映)後,會返回乙個新的陣列。

foreach類似,遍歷陣列,**函式的返回值組成乙個新的陣列,新陣列的索引結構和原陣列一致,原陣列保持不變。

不使用map()

var oldarr = [

, ,

];function getnewarr()

return newarr;

}console.log(getnewarr());

使用map()後:

var oldarr = [

, ,

];function getnewarr() );

}console.log(getnewarr());

// 再舉個例子:

var a = new array(1, 2, 3, 4, 5, 6);

var newarr = a.map(function(e) );

console.log(newarr); // [1, 4, 9, 16, 25, 36]

console.log(a); //[1, 2, 3, 4, 5, 6]

reduce()可以實現乙個累加器的功能,將陣列的每個值(從左到右)將其降低到乙個值。

遍歷陣列,呼叫**函式,將陣列元素組合成乙個值返回,

reduce從索引最小值開始,reduceright反向,方法有兩個引數。

**函式:把兩個值合為乙個,返回結果;

initialvalue,乙個初始值,可選。

舉個例子:

var a = new array(1, 2, 3, 4, 5, 6);

var a2 = a.reduce(function(v1, v2) );

var a3 = a.reduceright(function(v1, v2) , 100);

console.log(a2); // 21

console.log(a3); // 79

再舉個例子: 統計乙個陣列中每個單詞出現的次數。

不使用.reduce():

function getwordcnt() ;

for (var i = 0, l = arr.length; i < l; i++)

return obj;

}使用.reduce()

function getwordcnt() , {}); // 傳遞乙個初始值{}

}最後再來乙個例子, 加深理解傳遞初始值和不傳初始值的區別:

function nopassvalue());

}function passvalue(),{});

}console.log("no additional parameter:",nopassvalue());

console.log("----------------");

console.log("with {} as an additional parameter:",passvalue());

原文首發於

PHP5 Array 函式描述

array change key case 返回其鍵均為大寫或小寫的陣列 array chunk 把乙個陣列分割為新的陣列塊 array column 返回輸入陣列中某個單一列的值 array count values 用於統計陣列中所有值出現的次數。array combine 通過合併兩個陣列 乙...

ipc5 陣列操作 array

有乙個長度為 nn 的陣列 a 1,a 2,dots,a na1 a2 an 你需要對它進行 qq 次操作,每次操作可能為 修改 a iai 的值為 xx 修改陣列中所有小於 xx 的值為 xx。請你求出進行完所有操作後的陣列。第一行包含兩個正整數 n 1 leq n leq 2 times 10 ...

Golang學習筆記5 陣列array

1.array的定義var a 4 int 元素自動初始化為零 a int 編譯器按照初始化值數量確定陣列長度 a 5 int 未提供初始值的元素自動初始化為零2.陣列指標和指標陣列 陣列指標是指獲取陣列變數的位址。此時變數p就是指向陣列的指標。特別注意p定義的型別為長度為100的陣列的指標。長度必...