---
# System prepended metadata

title: 0429 Unit6 自寫內建函式

---

# 0429 Unit6 自寫內建函式

1. **Array.map**

map() 方法會建立一個新的陣列，其內容為原陣列的每一個元素經由回呼函式運算後所回傳的結果之集合

callback : 呼叫 arr 所有元素的回呼函式。新數值會在每次執行 callback 時加到 new_array

```
function double(n){
  return n*2
}
let arr = [1,2,3]
let newArr = arr.map(double)
//console.log(arr,newArr)

function map(arr,callback){
  let result = []
  for(let i=0; i<arr.length; i++){
    result[i] = callabck(arr[i])
  }
  return
}
console.log(map([1,2,3], double))
```


2. **String.repeat**

构造并返回一个新字符串，该字符串包含被连接在一起的指定数量的字符串的副本

'abc'.repeat(3) 輸出 abcabcabc

```
function repeat(str,n){
  let result = ''
  for(let i=1; i<=n; i++){
    result += str
  }
  return result
}

console.log(repeat('abc',3))
```

3. **Array.lastIndexOf**
 
從後面開始找陣列內的元素是第幾個index

```
function lastIndexOf(arr, target){
  for(let i=arr.length-1; i>=0; i--){
    if (arr[i] === target){
      return i
    }
  }
  return -1
}
console.log(lastIndexOf([2,1], 2))
```
