오늘의 시작은 1주차 과제 두번째!
절댓값만 있는 absolutes와 부호만 불리언으로 나타낸 signs를 이용하여 값을 합치고, 합을 구하는 문제였다.
내 정답 코드는 아래와 같다.
function solution(absolutes, signs) {
for(let i=0;i<signs.length;i++){
if(signs[i]==true){
continue;
}else{
absolutes[i]= -absolutes[i];
continue;
}
}
let sum = 0;
for(let i=0;i<absolutes.length;i++){
sum +=absolutes[i];
}
var answer = 123456789;
return sum;
}

오전동안은 자.스 문법 2주차를 수강했다. 새로 배운 것은 es6 문법, 일급 객체로서의 함수의 특징 네 가지과 map, set!
교집합은 다음으로 흉내낼 수 있음
ar intersection = new Set([...set1].filter(x => set2.has(x)));
차집합은 다음으로 흉내낼 수 있음
var difference = new Set([...set1].filter(x => !set2.has(x)));
2시간 걸려도 답이 안나오길래 정답 코드를 참고했다.
나는 n번째 철자를 빼낸 후 그것을 기존 것의 value로 만들어서 value로 정렬하려고 했지만 세번째 부분이 작동하지 않아(자꾸 ~~.sort가 함수가 아니라고 뜬다...) 포기했다. 아래는 밸류로 저장한 것까지 완료된 코드.
function solution(strings, n) {
let alphabet = [];
const myMap = new Map();
for(let i=0;i<strings.length;i++){
alphabet.push(strings[i][n]);
continue;
}
for(let i=0;i<strings.length;i++){
//뽑은 알파벳을 각 키의 밸류로 수정
myMap.set(strings[i], alphabet[i]);
continue;
}
//밸류값 비교해서 정렬
var answer = [];
return answer;
}
그리고 아래가 답안 코드. 맵으로 묶어서 새로 생성하지 않아 간결했다.
function solution(strings, n) {
var answer = [];
//1.문자열 가장 앞글자를 붙인 배열 만들기
for(var i=0;i<strings.length;i++){
strings[i]=strings[i][n] + strings[i];
}
//2. 해당 배열을 사전순으로 정렬 sort
strings.sort();
//3. 앞글자 제거 후 리턴
for(var j=0;j<strings.length;j++){
strings[j]=strings[j].replace(strings[j][0],"");
answer.push(strings[j]);
}
return answer;
}
여기에서 중간에 삑사리가 났는데 바로 strings[i]에다 strings[i][n] + strings[i] 뒤에 원본을 붙이는 것을 깜빡했다. 정신차리자

처음부터 자바와 비교한 것을 보고(숫자 입력하는데 자료형이 4가지나 되는 우리 자바...) 확실히 자바스크립트가 최근에 생겼구나라는 생각을 했다.(let만으로 8비트 사용)
가변은 바뀌는 것, 불변은 바뀌지 않는 것
var user = {
name: 'wonjang',
gender: 'male',
};
처럼 user을 만들고 user2를 생성할 때
var changeName = function (user, newName) {
return {
name: newName,
gender: user.gender,
};
};
var user2 = changeName(user, 'twojang');
처럼 새로운 객체로 만들어서 수정한다면 user2의 name만 변하고 user은 불변.
얕은 복사: function을 생성한 후 그 안에 빈 배열 정의, for(var 00 in target){빈 배열[00] 안에 target[00]을 복사} 사용해서 객체의 모든 프로퍼티에 접근, 복사를 완료한 객체의 프로퍼티를 변경
깊은 복사는 재귀 함수를 사용한다. (따라서 더 깊은 경로까지 복사시킴)
var copyObjectDeep = function(target) {
var result = {};
if (typeof target === 'object' && target !== null) {
for (var prop in target) {
result[prop] = copyObjectDeep(target[prop]);
}
} else {
result = target;
}
return result;
}
을 생성, target을 위의 재귀함수에 대입