forEach()
你不能中斷循環(使用break語句或使用return語句。
let testArray = ['a', 123, true];
testArray.forEach(function(item){
console.log(item);
});
//a
//123
//tru
map()
此方法會把陣列中的每個元素逐一調用,最後回傳sli一個由函式回傳值所組成的陣列,如果為稀疏陣列,原本的缺口也會被保留。
map會回傳 return 的物件、值,功用上是用來處理陣列回傳新值產生一個新陣列,要特別注意回傳的值數量與原始陣列長度相同,所以留空的 return 則會產生
undefined
map不會變
map常用在物件壓縮與轉換只抽取或計算必要的條件產生新的物件
let mapArray = testArray.map(function(item){
return item*item;
});
console.log(mapArray);
sort()方法
- ]此方法會將原陣列上的元素排序,並回傳排序後的陣列。若呼叫時不帶條件,會依字首的字體大小寫與字母順序,或數值大小來排列。
- 帶原生會有錯誤,造成不穩定
- 字串會用unicode去做判斷,會用第一個去比較
let testArray = ['apple', 'banana', 'Cat', 'Dog'];
let sortArray = testArray.sort();
console.log(sortArray);//["Cat", "Dog", "apple", "banana"]
如果給定條件,則依據return的值決定順序:
array.sort(function(a, b){
if(a的值 > b的值){
return > 0 (a.index > b.index)
return = 0 (a.index與b.index不變)
return < 0 (a.index < b.index)
}
})
members=[{year:27},{year:14},{year:50}]
members.sort(function(a,b){
return a.year>b.year
})
console.log(members);
快速排序會有不穩定
let newOrder=[1,2,3,4];
newOrder.sort((a,b)=>Math.random()>0?1:-1)
我們回傳跟a,b無關,而是回傳一個亂數產生陣列,並不會排大小