パートナー-オブジェクト


対象12号
속성의 개수
function countNumberOfKeys(obj) {
  return Object.keys(obj).length;
}
// Object.keys()는 배열에 key값만 담아준다.
別の解釈
function countNumberOfKeys(obj) {
  let count = 0;
  for(let prop in obj) {
    obj[prop];
    count++;
  }
  return count;
}
対象13号
function printObject(obj) {
  let result = '';
  for(let prop in obj) {
    result = result + prop + ': ' + obj[prop] + '\n'
  }
  return result;
}

// obj = { prop: obj[prop] };
対象15号
function select(arr, obj) {
  let result = {}; // 입력받은 객체를 수정하지 않아야 합니다.
  for(let i in arr) { // in으로 해야 index가 나옴.
    for(let prop in obj) {
      if(arr[i] === prop) {
        result[prop] = obj[prop];
      }
    }
  }
  return result;
}

対象19号
function extend(obj1, obj2) {
    for(let prop in obj2)
    if(!obj1[prop]) {
      obj1[prop] = obj2[prop];
    }
  
}
// obj2의 속성이 obj에 없다면
対象20号
function countAllCharacters(str) {
  let obj = {};
    for(let i = 0; i < str.length; i++) {
      if(obj[str[i]] === undefined) { // if(!(obj[str[i]]))
        obj[str[i]] = 0;
      }
      obj[str[i]]++;
    }
  return obj;
}
対象21号
function mostFrequentCharacter(str) {
  let obj = { mostCount: 0, mostFrequent: '' };
  for (let i = 0; i < str.length; i++) {
    if (str[i] === ' ') {
      continue;
    }

    if (obj[str[i]] === undefined) {
      obj[str[i]] = 0;
    }
    obj[str[i]] += 1;

    if (obj[str[i]] > obj['mostCount']) {
      obj['mostCount'] = obj[str[i]];
      obj['mostFrequent'] = str[i];
    }
  }
  return obj['mostFrequent'];
}
// 가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자를 리턴