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的陣列的指標。長度必...