TIL 11,12


"""""""""
配列=array
オブジェクト=obj
.
📌 str[0]
文字列の0番目のインデックス出力
文字列「this」(文字列).
str[1]を入力と、
これは最初のインデックスt出力です.
.
📌 array[1]
配列内の最初のインデックス出力
.
📌 array.slice(スタート、終了)→end-1
[1.2.3.4.5.6.7],
array.入力slice(0,3)、//index 0からindex 2に出力
[1.2.3]出力した
array.入力slice(2,6)、//index 2からindex 5に出力
[3, 4, 5, 6]
.
📌 function allKeys (obj) {
for(letinsu in obj){/[key:value]を持つobjで、insu変数名としてすべてのkeyを指定します.変数名を繰り返します.
すなわち,[key:value]全体がobjである.
keyをinsu変数名として指定します.
では、objのvalue値を取得するには、次の手順に従います.→ obj[insu]
insuは変数名なのでobj['insu'とは書きません.
obj['insu'と書くとinsu変数名の値はnameになります
objnameを入力するとvalue値が呼び出されます.
.
詳細:
key:valueフォーマット、
「アンナ」がいます.←この部分全体を属性変数と呼ぶ.
ここで、propertyの値「Anna」を出力するには、次の2つの方法があります.property.name
     OR
property['name']
But❗️ 변수를 쓸 때는 bracket notation [  ] 사용   ❗️

→ 위에 insu 변수명 썼을때 obj[insu]라고만 써주는 이유.
.
< Another example >
let obj = {
key : [ 'Tim' , 'Kim' ]
};
ここで、入力obj[key]、出力値['Tim' , 'Kim'].
.
整列
要素:値
index:順序0から
元の配列を変更(修正)する方法
📌 .unshift()の一番前の要素を追加-戻り長さ
📌 .shift()の一番前の要素を削除-値付き
📌 .push()の末尾に要素を追加-戻り長さ
📌 .pop()の後ろの要素を削除-値付き
新しいアレイを返す方法(元のアレイを変更しない方法)
📌 .slice()
Array.prototype.sliceは開始から終了までターゲット配列から取り出し、新しい配列を作成して値を入れます.startとendが指定されていない場合は、配列全体をコピーします.→浅い放射let arr= [1,2,3] arr.slice()[1,2,3]出力
使用.unshift()の例
▪️ 배열의 첫번째 요소가 삭제된 배열을 리턴해야 합니다.
function removeFromFront(arr) {
  return arr.shift
}

가 아니라❗️ 

function removeFromFront(arr) {
  arr.shift();
  return arr;
}
使用.shift()の例
▪️ 배열의 마지막 요소가 삭제된 배열을 리턴해야 합니다.
function removeFromBack(arr) {
  arr.pop()
  return arr;
}
   ▶️ removeFromBack([1,2,3]) 입력시, [1,2] 가 출력된다. (제거되고 남은 값이 출력됨)
     (원래 arr가 수정되는 원리)

⭐️ let arr= [1,2,3]
	 arr.pop();
▶️ 이 경우에는 3 이 출력된다.
	(제거되는 값이 출력됨)
.slice()の使用例
▪️ 배열의 마지막 요소가 제외된 **새로운 배열**을 리턴해야 합니다.
function removeFromBackOfNew(arr) {
 return arr.slice(0, arr.length-1)
}

▶️ 새로운 배열을 리턴할 땐, 마지막 요소를 제거하여 기존 배열을 수정하는 .pop() 메소드를 사용하지 않는다.
.slice()わあ.push()の併用例
最後に要素を追加した配列を結果として得たいのですが、pushは「長さ」を返す方法なので書けませんが、、、どうすればいいのでしょうか.
▶▼このとき、Sliceはpushと一緒に使います~!
▪️ 배열과 요소를 입력받아 새로운 요소가 맨 뒤에 추가된 **새로운 배열**을 리턴해야 합니다.
function addToBackOfNew(arr, el) {
  const newArr = arr.slice();   ▶️ slice를 하면 새로운 배열이 탄생하기 때문에 새로운 변수인 newArr를 만들어줘서 그 속에 새 배열을 넣는것임
  newArr.push(el);       // 이 부분 계산값은 '길이'반환이지만,
  return newArr;         // 최종적으로 newArr 리턴하니까 결국 배열 자체를 반환하게 된다
}
.slice()わあ.unshift()との併用例
一番前に要素が追加された配列の結果を得たいのですが、unshiftは「長さ」を返すベソッドで、書けません.
▶▼このとき、sliceはunshiftと一緒に使います~!
▪️ 배열과 요소를 입력받아 맨앞에 새로운 요소가 추가된 **새로운 배열**을 리턴해야 합니다.
function addToFrontOfNew(arr, el) {   // arr=[1,2,3]  el=0 이라고 치면
	const newArr= arr.slice()           // newArr=[1,2,3]  (slice()로 복사만 했으니까)
	newArr.unshift(el)                  // unshift는 길이 반환하니까, 이 부분 계산값은 4
	return newArr;                     // 배열 자체를 리턴하니까, 최종적으로 [0,1,2,3] 출력
}
[元の配列を修正](Modify Original Array)と[新規配列](New Array)の比較
▪️ 배열과 인덱스를 입력받아 해당 인덱스의 요소를 제외한 배열을 리턴해야 합니다.
🔶 push 사용

function getAllElementsButNth(arr, n) {      ▶️ arr=[1,2,3]  n=1 이라고 가정. (2를 뺄거임)
  let result = [];

  for (let i = 0; i < arr.length; i++) {      i=0
    if (i !== n) {                            i가 1아니라면    (i가 1인 차례가 오면 무시되고 바로 i=2로 넘어감. if문이 for문 안에 갇혀있으니, for문 안에서 계속 반복될수밖에 없음.)
      result.push(arr[i]);                    [].push(arr[0])   맨뒤에 요소추가 (길이반) [1]
    }
  }                                          

  return result;                              ▶️ 최종적으로 [1,3] 출력
}
▪️ 배열과 인덱스를 입력받아 해당 인덱스의 요소를 제외한 **새로운 배열**을 리턴해야 합니다.
🔶 slice 사용

function getAllElementsButNth(arr, n) {
  if(n > arr.length) {                 
    return arr;
  }

  let arr1= arr.slice(0,n)
  let arr2= arr.slice(n+1,arr.length)
  return arr1.concat(arr2);
}
アレイの最後の値を求める
let array = [1,2,3,4,5]array[array.length - 1]/5出力です.
→array[4]はarrayを出力する4番目のインデックスであるため、最後の5つの出力である.
.
オブジェクト
配列vsオブジェクト
整列
対象:有意義
📌 for ... inオブジェクトの重複文
📌 for ... 複文
.
let tweet = {
writer: 'stevelee',
createdAt: '2019-09-10 12-03:33',
content: '프리코스 재밌어요!'
};

입력                       출력
tweet.content      // -> "프리코스 재밌어요!"
tweet['content']   // -> "프리코스 재밌어요!"