# ==討論日期 : 4/3 ( 三 )==
## 上週複習
- [討論日期:3/27](https://hackmd.io/qQicL-fbQBq-wNWBLvCITw?both)
<br>
## 💖 本週複習 🥰
[核心篇第四堂:物件與記憶體位置](https://hackmd.io/@hexschool/HJ0DpbL4i)
<br>
### ==1. 陣列題==
```javascript
// Given an integer array arr and a mapping function fn, return a new array with a transformation applied to each element.
// The returned array should be created such that returnedArray[i] = fn(arr[i], i).
// Please solve it without the built-in Array.map method.
Example 1:
Input: arr = [1,2,3], fn = function plusone(n) { return n + 1; }
Output: [2,3,4]
Explanation:
const newArray = map(arr, plusone); // [2,3,4]
The function increases each value in the array by one.
Example 2:
Input: arr = [1,2,3], fn = function plusI(n, i) { return n + i; }
Output: [1,3,5]
Explanation: The function increases each value by the index it resides in.
Example 3:
Input: arr = [10,20,30], fn = function constant() { return 42; }
Output: [42,42,42]
Explanation: The function always returns 42.
```
#### 相關知識點
#### 大家回答
```javascript
const arr = [1, 2, 3];
const fn = function constant(n, i) {
return n + i;
};
function map(arr, fn) {
const newArr = [];
arr.forEach((item, index) => {
newArr[index] = fn(item, index);
});
return newArr;
}
console.log(map(arr, fn));
```
<br>
### ==2. 陣列題==
```javascript
// 給定一個陣列,裡面有重複的數字。請實踐一個 removeDuplicate 函式,函式會接收一個參數,此參數是一個陣列,最後函式會輸出去除重複數字後的陣列。
const originalArr = [9,2,2,2,5,8,3,3,8,111,9,111]
const ans = removeDuplicate(originalArr);
console.log(ans) // [9,2,5,8,3,111]
```
#### 相關知識點
#### 大家回答
```js=
function removeDuplicate(ary) {
const result = [];
originalArr.forEach(function (item) {
if (!result.includes(item)) {
result.push(item);
}
});
return result;
}
```
```js=
const originalArr = [9,2,2,2,5,8,3,3,8,111,9,111]
const removeDuplicate = (arySet) => arySet.filter((item, index, ary) => ary.indexOf(item) === index)
const ans = removeDuplicate(originalArr);
console.log(ans) // [9,2,8,3,111]
```
```js=
function removeDuplicate(ary){
return [...new Set(ary)]
}
```
```js=
const originalArr = [9,2,2,2,5,8,3,3,8,111,9,111]
const ans = [... new Set (originalArr)]
console.log(ans) //(6) [9, 2, 5, 8, 3, 111]
```
```js=
function removeDuplicate(arr) {
let newArr = [];
arr.forEach((item) => {
if (!newArr.includes(item)) {
newArr.push(item);
}
});
return newArr;
}
```
```js=
function removeDuplicate(arr) {
return Array.from(new Set(arr));
}
```
```js=
const originalArr = [9, 2, 2, 2, 5, 8, 3, 3, 8, 111, 9, 111];
function removeDuplicate(arr) {
const newArr = [];
arr.forEach((item, index) => {
if (arr.indexOf(item) === index) {
newArr.push(item);
}
});
return newArr;
}
console.log(removeDuplicate(originalArr));
```
```js=
function removeDuplicate(ary){
const newAry=[]
ary.sort((a,b)=>a-b).forEach((item,index)=>{
if(item!==ary[index+1])newAry.push(item)
})
return newAry
}
```
<br>
### ==3. [Codewars](https://www.codewars.com/kata/5ba38ba180824a86850000f7/train/javascript)==
```js=
function solve(arr) {
return arr.filter((item, index, ary) => ary.lastIndexOf(item) === index);
}
```
```js=
const ary = [3, 4, 4, 3, 6, 3];
const newAry = [];
ary.forEach(function (item, i) {
if (ary.lastIndexOf(item) === i) {
newAry.push(item);
}
});
console.log(newAry);
```
```js=
function solve(arr) {
arr = [...new Set(arr.reverse())].reverse();
return arr;
}
```
```js=
const originalArr = [3, 4, 4, 3, 6, 3];
function removeDuplicate(arr) {
const newArr = [];
arr.forEach((item, index) => {
if (arr.lastIndexOf(item) === index) {
newArr.push(item);
}
});
return newArr;
}
console.log(removeDuplicate(originalArr));
```
<br>
### 問題測驗 (溫馨提醒記得複習前面幾周的唷!)
#### ==題目一==
```js=
var person = {
name: '小明',
age: 32,
1: '2',
gender: 'male',
interests: ['吃飯', '睡覺', '打動動'],
greeting: function() {
console.log("Hi! I'm " + this.name[0] + '.');
},
哈囉: function() {
console.log('我是' + this.name);
}
};
```
問:取得「哈囉」
1. `person.哈囉`
2. `person['哈囉']`
<br>
問:取得 1
1. `person['1']`
2. `person[1]`
<br>
#### ==題目二==
```js=
var a = 1;
a.a = 2;
console.log(a.a);
```
1. 1
2. 2
3. undefined
解答:3 (原始型別不能加屬性)
<br>
#### ==題目三==
```js=
var a = new Number(1);
a.a = 2;
console.log(a.a)
```
1. 1
2. 2
3. undefined
解答:2 (物件可以加屬性)
<br>
#### ==題目四==
```js=
var a = 1;
function fn() {
a = fn.a;
}
fn.a = 2;
console.log(a);
```
1. 1
2. 2
3. undefined
解答:1
```js=
var a = 1;
function fn() { //函式沒執行
a = fn.a;
}
fn.a = 2;// 函式的屬性
console.log(a);//只看變數
```
<br>
#### ==題目五==
```js=
var a = {};
var b = { b: 'c' };
var c = { c: 'b' };
a[b.b] = 123;
a[c.c] = 456;
console.log(a['b']);
```
1. 123
2. 456
3. undefined
解答:2
解釋 1:
```javascript=
var a = {};
var b = { b: 'c' };
var c = { c: 'b' };
a[b.b] = 123; // 不用理他
a[c.c] = 456; // c.c 是 'b',視為 a['b']
console.log(a['b']);
```
解釋 2:
```
a[b.b] = a['c'] = 123
a[c.c] = a['b'] = 456
```
<br>
#### ==題目六==
```js=
var prop = '1';
var obj = {
1: function() {
console.log('1');
},
prop: function() {
console.log('2');
}
};
obj[prop]();
```
1. 1
2. 2
3. undefined
解答:1
<br>
#### ==題目七==
```js=
var a = {};
a.a = a;
console.log(a.a.a === a.a);
```
解答:true
<br>