Javascriptオブジェクト


🗄 オブジェクト


オブジェクトはJavaScriptデータ型の1つです.영어로는 object key값과 value값을 쌍からなり、アレイとは異なり、순서가 중요하지 않다.{ key : value }
たとえば、次のようなシナリオがあるとします.
let person1 = ['곽철용', 'AB형', 'ENFP', '바닐라라떼']
私たちが望む情報を得るためには、この配列のIndexNumberを覚えなければなりません.
let person2 = ['아이스아메리카노', 'INTP', '홍혁팔', 'O형']
person 2の値はperson 1の情報の順序とは異なる.
2人の場合は可能ですが、100人だと資料が扱いにくいです.
そのため、객체という概念が得られた.
let person1 = {
  name: '곽철용',
  bloodType: 'AB형',
  mbti: 'ENFP',
  favoriteCoffee: '바닐라라떼'
}
key値は引用符を必要とせずに操作できます.valueはstringタイプの場合にのみ引用符を使用します.
オブジェクト表示で順序がないのでindex numberを覚える必要はありません.
私たちが望む情報のkey値を知っていれば、情報にアクセスできます.

オブジェクトへのアクセス

Bracket Notationスペースがある場合に使用します.オブジェクト「key」=value[]の引用符を入力する必要があります.数字キーもこう書いてあります
全部暗記する必要はありません.エラーが発生したら、確認して修正すればいいです.
いろいろな形で名前がつけられると知っていればいいのです.Dot Notationオブジェクト.key = value 객체에 추가新しいことを書いて入れるだけでいいです
object1.key = value
객체에서 제거
delete object1.key

オブジェクト内のオブジェクト、配列アクセス


ネストされたオブジェクトにアクセスしてsimpleを出力する方法を以下に示します.
let nestedObj = {
	type: {
		year: '2019',
		'comment-type': [{
			name: 'simple'
		}]
	}
}
; 

console.log(nestedObj.type['comment-type'][0].name) //정답
まず、呼び出しオブジェクトを使用してtypeにアクセスします.
=> nestedObj.type
次に「comment-type」にアクセスします.
=> nestedObj.type['comment-type']
次に、次のcomment-typeプロパティの値は配列構造(ex>let arr=[];同じフォーマット)であるため、インデックスでアクセスします.
=> nestedObj.type['comment-type'][0]
0番目のインデックスのnameというpropertyが持つsimpleというproperty値にアクセスします.
=> nestedObj.type['comment-type'][0].name
コンソールで呼び出すとsimpleが画面に出力されます.
=> console.log(nestedObj.type['comment-type'][0].name)
オブジェクトからkeyを使用してvalue値にアクセスする場合、keyは実際のkey名を使用する必要があります.
他の変数として指定した後では使用できません.
またcontとして宣言されたオブジェクトについては、オブジェクト自体を再宣言することはできませんが、propertyの内容を変更したり、新しいpropertyを追加したりすることができます.(元々constは変更自体が変更されていない変数です)

function getData(salesArr,reviewArr,likeArr){

  let sumAmount1 = 0;
  let sumReview1 = 0;
  let sumLike1 = 0;

for(i=0;i<salesArr.length;i++){

   sumAmount1 = sumAmount1 + salesArr[i][1];
   sumReview1 = sumReview1 + reviewArr[i][1];
  sumLike1 = sumLike1 + likeArr[i][1];
  
}

  let a = {sumAmount : sumAmount1 , 
           sumReview : sumReview1 , 
           sumLike : sumLike1
          }
  return  a
      
};
let k = [["20190401", 34], ["20190402", 23], ["20190403", 29]];
let p = [["20190328", 3], ["20190401", 0], ["20190403", 1]];
let f = [["20190328", 98], ["20190401", 102], ["20190403", 125]];

console.log(getData(k,p,f));
ここのポイントは、누적 값을 다룰 때, 초기 변수 0으로 만들어 놓고 반복문 안에서 i로 나온 값들을 더해서 재할당を覚えてください.

📰 Object.keys()


オブジェクトの키들의 목록을 배열로 리턴メソッド
Object.keys(obj) // ['name', 'weight', 'price', 'isFresh']
このように使います.
const keys = Object.keys(obj) // ['name', 'weight', 'price', 'isFresh']

for (let i = 0; i < keys.length; i++) {
const key = keys[i] // 각각의 키
const value = obj[key] // 각각의 키에 해당하는 각각의 값
console.log(value)
}
ES 6構文のObject.keys以外のオブジェクト作成者のメソッドはObjectです.values , Object.エントリがあります.

📸 Object.values()


オブジェクトのキーではなく값으로 이루어진 배열 리턴
const values = Object.values(obj)
// values === ['melon', 4350, 16500, true]

Object.entries()


オブジェクトの키와 값의 쌍으로長さが2の配列からなる配列を返します.各配列において、インデックス[0]の値は各キーを表す.
インデックス[1]の値には、キーに対応する値があります.
  const entries = Object.entries(obj)

/*
entries === [
['name', 'melon'],
['weight', 4350],
['price', 16500],
['isFresh', true]
]
*/


제일 유용하게 쓰인다. 

for-in


ドアのようなものは、객체 순회だけでなく、일반적 배열 순회を作るときにも役立ちます.

整理してよかった
通常のfor文は使用できますが、オブジェクトにインデックスがないため使用できません.この文は使用する必要があります.
これらを合わせた、とても重要な例です!!

const getExamResult = (scores, requiredClasses) => {


let result = { };
let ClassScores = Object.keys(scores);
let ClassNum = Object.values(scores);
 let ff = Object.keys(result);
  
  for(let i in ClassScores){
    
result[ClassScores[i]] = ClassNum[i];
   

  } //result 라는 빈 객체 만든 다음에, scores 값들 일단 다 넣음

  for (let i in requiredClasses){


    if(ff.indexOf(requiredClasses[i]) === -1){

result[requiredClasses[i]] = 0;

    }
  } //  여기다가 result에 없는 requiresClasses 값들 까지 추가함 value는 0으로. 

  for(let key in result){

let kk = result[key];
    
if( kk === "A+"){
      result[key] = 4.5;
    } else if ( kk === "A"){
      result[key] = 4;
    } else if ( kk === "B+"){
     result[key] = 3.5;
    } else if ( kk === "B"){
      result[key] = 3;
    } else if ( kk === "C+"){
      result[key] = 2.5;
    } else if ( kk === "C"){
     result[key] = 2;
    } else if ( kk === "D+"){
      result[key] = 1.5;
    } else if ( kk === "D"){
      result[key] = 1;
    } else if (kk === "F"){
  result[key] = 0}

}
  
   // 영어들을 숫자로 환산 

    return result;  // 그래서 만들어진 result 리턴  
} //이까지 함수  

r = {
  '생활속의회계': 'C',
  '논리적글쓰기': 'B',
  '독일문화의이해': 'B+',
  '기초수학': 'D+',
  '영어회화': 'C+',
  '인지발달심리학': 'A+',
};
y = ['영어회화', '기초수학', '공학수학', '컴퓨터과학개론'];

  console.log(getExamResult(r,y));