๊ฐ์ฒด๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ ํ์
์ค์ ํ๋์ด๊ณ . ์์ด๋ก๋ object
key๊ฐ๊ณผ value๊ฐ์ ์
์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๋ฐฐ์ด๊ณผ๋ ๋ค๋ฅด๊ฒ ์์๊ฐ ์ค์ํ์ง ์๋ค.
{ key : value }
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๋ฐฐ์ด์ด ์๋ค๊ณ ์๊ฐํด๋ดค์๋,
let person1 = ['๊ณฝ์ฒ ์ฉ', 'ABํ', 'ENFP', '๋ฐ๋๋ผ๋ผ๋ผ']
์ฐ๋ฆฌ๊ฐ ์ํ๋ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด์๋ ํด๋น ๋ฐฐ์ด์ ์๋ Index number๋ฅผ ๊ธฐ์ตํด์ผ ํ๋ค.
let person2 = ['์์ด์ค์๋ฉ๋ฆฌ์นด๋
ธ', 'INTP', 'ํํํ', 'Oํ']
person2๋ person1์ ์ ๋ณด์ ๋ค๋ฅธ ์์๋ก ๊ฐ์ด ๋ค์์ฌ ์์ต๋๋ค.
์ฌ๋์ด ๋ ๋ช ์ผ ๋๋ ๊ด์ฐฎ์ง๋ง, 100๋ช ์ด๋ผ๋ฉด ์๋ฃ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ํ๋ค์ด์ง๋ค.
๊ทธ๋์ ๋์จ ๊ฐ๋
์ด ๋ฐ๋ก ๊ฐ์ฒด
์ด๋ค.
let person1 = {
name: '๊ณฝ์ฒ ์ฉ',
bloodType: 'ABํ',
mbti: 'ENFP',
favoriteCoffee: '๋ฐ๋๋ผ๋ผ๋ผ'
}
key ๊ฐ์ ๋ฐ์ดํ ์ํด๋ ๋์ํ๋ค. value๋ string ํ์ ์ผ๋๋ง ๋ฐ์ดํ ์ด๋ค.
๊ฐ์ฒด๋ก ํํํ๋ฉด ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ index number๋ฅผ ๊ธฐ์ตํ์ง ์์๋ ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ํ๋ ์ ๋ณด์key
๊ฐ๋ง ์๋ฉด ์ ๋ณด์ ์ ๊ทผํ ์ ์๋ค.
Bracket Notation
๊ณต๋ฐฑ์ด ์์ ๋ ์ด๋ค. ๊ฐ์ฒด["key"] = value [ ] ๋ฐ์ดํ๋ฅผ ์จ์ผ ํจ . ์ซ์๋ก ๋ key ๋ ์ด๋ ๊ฒ ์ด๋ค.
๋ค ์ธ์์ผ ๋ ํ์ ์๊ณ , ์ค๋ฅ ๋จ๋ฉด ํ์ธํ๊ณ ์์ ํ๋ฉด ๋จ.
๋ค์ํ ํํ๋ก key ์ด๋ฆ ์ง์ ์ ์๋ ๊ฒ๋ง ์๋ฉด ๋๋ค.
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' property์ ๊ฐ์ ๋ฐฐ์ด ๊ตฌ์กฐ(ex> let arr = []; ๊ฐ์ ํ์)๋ก ๋์ด์๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ ํตํด์ ์ ๊ทผํ๋ค.
=> nestedObj.type['comment-type'][0]
0๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋ name์ด๋ผ๋ ํ๋กํผํฐ๊ฐ ๊ฐ์ง๊ณ ์๋ simple์ด๋ผ๋ ํ๋กํผํฐ ๊ฐ์ ์ ๊ทผํ๋ค.
=> nestedObj.type['comment-type'][0].name
์ด๊ฒ์ ์ฝ์๋ก ํธ์ถํ๋ฉด simple์ด ํ๋ฉด์ ์ถ๋ ฅ๋๋ค.
=> console.log(nestedObj.type['comment-type'][0].name)
๊ฐ์ฒด์์ key ๋ก value ๊ฐ์ ์ ๊ทผํ ๋, ์ด๋์ key ๋ ์ค์ key ์ด๋ฆ์ ์จ์ผ ํ๋ค.
๋ค๋ฅธ ๋ณ์๋ก ์ง์ ํ ๋ค์์ ๊ทธ๊ฑธ ์ฐ๋ฉด ์๋จ.
๋, const๋ก ์ ์ธํ ๊ฐ์ฒด์ ๊ฒฝ์ฐ, ๋ค์ ๊ฐ์ฒด ์์ฒด๋ฅผ ์ ์ธํ๋ ๊ฑด ์๋์ง๋ง, ํ๋กํผํฐ์ ๋ด์ฉ์ ์์ ํ๊ฑฐ๋, ์ ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฐ๋ฅํ๋ค. (์๋ 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(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)
}
ES6 ๋ฌธ๋ฒ์์๋ Object.keys ์ด์ธ์๋ Object ์์ฑ์์ ๋ฉ์๋์ธ Object.values , Object.entries ๊ฐ ์๋ค.
๊ฐ์ฒด์ ํค๊ฐ ์๋
๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด ๋ฆฌํด
const values = Object.values(obj) // values === ['melon', 4350, 16500, true]
๊ฐ์ฒด์
ํค์ ๊ฐ์ ์์ผ๋ก
์ด๋ฃจ์ด์ง ๊ธธ์ด 2์ง๋ฆฌ ๋ฐฐ์ด๋ก ์ด๋ฃจ์ด์ง, ๋ฐฐ์ด์ ๋ฆฌํดํฉ๋๋ค. ๊ฐ ๋ฐฐ์ด์์ ์ธ๋ฑ์ค [0]์ ๊ฐ์ ๊ฐ๊ฐ์ ํค๋ฅผ,
์ธ๋ฑ์ค [1]์ ๊ฐ์ ํด๋น ํค์ ํด๋นํ๋ ๊ฐ์ ๊ฐ์ง๊ฒ ๋๋ค.
const entries = Object.entries(obj)
/*
entries === [
['name', 'melon'],
['weight', 4350],
['price', 16500],
['isFresh', true]
]
*/
์ ์ผ ์ ์ฉํ๊ฒ ์ฐ์ธ๋ค.
for๋ฌธ ๊ฐ์ ๊ฑด๋ฐ,
๊ฐ์ฒด ์ํ
๋ฟ ์๋๋ผ,์ผ๋ฐ์ ๋ฐฐ์ด ์ํ
ํ ๋๋ ์ ์ฉ.
์ ๋ฆฌ ๋๋ฌด ์ ๋์ด ์๋ค.
์ผ๋ฐ for ๋ฌธ์ ์จ๋ ๋์ง๋ง, ๊ฐ์ฒด์์๋ index๊ฐ ์์ด์ 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));