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無關,而是回傳一個亂數產生陣列,並不會排大小

results matching ""

    No results matching ""