프로젝트4 - div 섹션 구역 분리 와 CSS 스타일 적용하기

이미지
웹 브라우저에 표시되는 글자와 이미지 들에 디자인 적인 효과( 배경색, 글자색, 크기 조절...) 및 브라우저 내에서의 배치등을 조절하기 위해서는 구역을 나누면 편리해진다. 바로 구역(섹션) 을 나누어 주는 역할을 하는 태그가 div 이다. <div>태그는 브라우저에서 보여지는 시각적 기능은 없다. 단지, 구역을 나누는 역할을 한다.  코드를 만들어 본다. <!DOCTYPE html> <html> <head>   <title>div</title> </head> <body>   <div>     <p>Ice cream is a frozen dessert typically made from milk or cream that has been flavoured with a sweetener,        either sugar or an alternative, and a spice,        such as cocoa or vanilla, or with fruit, such as strawberries or peaches.</p>   </div>   <div>     <p> Food colouring is sometimes added in addition to stabilizers.        mixture is cooled below the freezing point of water and stirred to incorporate air spaces and prevent detectable ice crystals from forming.        It can also be made by whisking a flavoured cream base and liquid nitrogen together.        The result is a smooth, semi-solid foam that is solid at v

자바스크립트 Array.sort() 문자열 정렬 다루기

 




지난 시간 숫자의 경우와 다르게 문자열의 경우는
sort() 함수 만으로도 정렬이 된다. 
        const strs = ["ebc" , "def" , "acc" , "fef" , "bft"];   
        strs.sort();
        console.log(strs);

위 코드에 대한 결과는 

  1. Array(5)
    1. 0: "acc"
    2. 1: "bft"
    3. 2: "def"
    4. 3: "ebc"
    5. 4: "fef"
    6. length: 5

이와 같이 첫글자의 알파벳 순서대로 정렬이 된다.
알파벳 순은 유니코드 순서대로 정렬을 한다.

그럼, 문자열에는 숫자처럼 오름차순,내림차순을 직접 정의하는 콜백함수를 적용할 수 없나?
아니다. 적용이 가능하다.
    strs.sort(function(next,pre){
            console.log(next,pre);
            // console.log("b".charCodeAt());          
            if(next>pre){
              return 1; // 그대로
            }else if(next<pre){
              return -1; //역순으로
            }else{
              0
            }
        });  

지난 숫자편 처럼, 콜백함수를 등록하고 앞뒤 인덱스에 배치된 문자열을 비교하면 된다.
유니코드로 비교되며, return 값이 양수 값일때는 순서를 그대로 배치하고
음수 일때는 순서를 바꾼다.  이는 숫자 콜백함수 구현때와 동일하다.
위 코드를 실행하면,

def ebc

acc def

fef acc

fef def

fef ebc

bft ebc

bft def

bft acc

['acc', 'bft', 'def', 'ebc', 'fef']

알파벳 순서대로 정렬 됨을 알수 있다.
반대로 정렬을 하고 싶다면, 하기와 같이 수정하면 된다.

  strs.sort(function(next,pre){    
            if(next>pre){
              return -1; //역순으로 배치
            }else if(next<pre){
              return 1; //그대로 배치
            }else{
              0
            }
        });      
        console.log(strs);

['fef', 'ebc', 'def', 'bft', 'acc']
결과는 역순으로 정렬된 모습을 볼 수 있다.
숫자 콜백함수 와 다른점은 하기와 같이 빼기 함수를 사용하여 정렬은 불가하다.
이는 숫자 콜백함수 에서만 가능하다. 문자열에서는 첫글자의 크기만 비교하기 때문이다.
  strs.sort(function(next,pre){ 
            return next-pre;
        });

이렇게 구현해도, 정렬이 되지 않는다. 
return pre-next 역시 마찬가지이다.
['ebc', 'def', 'acc', 'fef', 'bft']  초기 위치에서 아무런 변화가 없다.

이는 모질라 API문서 에서 설명하고 있다.
감사합니다.

댓글

이 블로그의 인기 게시물

구글 블로그 이미지 복사 붙여넣기 가능한가요?

HTML 페이지 기본 구성.(HTML Page Structure)

구글 블로그 대표이미지 설정하기