레이블이 자바스크립트인 게시물을 표시합니다. 모든 게시물 표시
레이블이 자바스크립트인 게시물을 표시합니다. 모든 게시물 표시

2015년 12월 18일 금요일

자바스크립트 정렬코드 (2)

정렬코드를 위해 간단한 함수를 만들어 보았다.

stage_dt =[{stage:2, score:30},{stage:4, score:90},{stage:7, score:45}]
라고 한다면,

1. stage에 원하는 스테이지 값을 넣으면, 그 스테이지의 값을 리턴해준다.
2. stage값이 배열에 없다면, -로 넣어주어야 할 장소를 리턴한다.
3. stage값이 배열에 없고, 배열의 제일 처음에 넣어야 한다면 -1000을 리턴한다.
4. stage값이 배열에 없고, 배열의 제일 끝에 넣어야 한다면 -2000을 리턴한다.

string함수 중 하나인 splice를 써서 배열에 값을 추가해 주었다.

예제 소스는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
var stage_dt =[{stage:2, score:30},{stage:4, score:90},{stage:7, score:45}]
var stage = 4;
var temp_u = {};
temp_u.stage = stage;
temp_u.score = 11;
var position = find_top_score(stage, stage_dt);
if(position < 0){
    if(position == -1000){
        stage_dt.splice(0,0, temp_u);
    }else if(position == -2000){
        stage_dt.splice(stage_dt.length,0, temp_u);
    }else{
        position = position*(-1);
        stage_dt.splice(position,0, temp_u);
    }
}else{
    stage_dt[position].score = temp_u.score;
}
function find_top_score(stage, stage_dt){
    
    var position = 0;
    var m_p_f = 0;
    
    var stages_size = stage_dt.length;
    
    if(stage >= stages_size){
        position = stages_size-1;
    }else{
        position = stage -1;
    }
    
    do{
        value = stage - stage_dt[position].stage;
        if(value == 0){
            return position;
        }else if(value < 0){
            if(position == 0){
                return -1000;
            }else if(m_p_f == 1){
                return ((position+1)*(-1));
            }else{
                position --;
                m_p_f = -1;
            }
        }else{
            if(position == stages_size-1){
                return -2000;
            }else if(m_p_f == -1 ){
                return (-1*(position+1));
            }else{
                position ++;
                m_p_f = 1;
            }
        }
    }while(true);
}
cs

2015년 10월 21일 수요일

[JavaScript]배열의 요소 삭제

배열의 중간 부분의 요소를 삭제하려면
splice메소드를 사용하면 된다.

요소의 넘버는 0부터가 시작인것을 주의하자


var array = [0,1,2,3,4,5,6];
array.splice(4,1);

// array의 5번째 요소가 삭제된다.
[0,1,2,3,5,6]


2015년 9월 28일 월요일

POST를 이용한 JSON송신

form의 post방식을 이용하여 json을 송신하는 소스이다.
서버쪽 코드는 아래와 같다.

router.post('/sameple_test', function  (req, res) {
    var data = req.body.data;
    console.log("data : " + data);
    var json = JSON.stringify(eval("(" + data + ")"));
    var d = JSON.parse(json);
   
    console.log("data.node : " + d.node);
    res.end();
});

sameple_test라는 주소로 보내게 되며, json변환을 위해
data 파라미터로 받아온 값은 json형이 아닌 string형이기 때문에
JSON.parse()전, json string형의 변환이 필요하여,
JSON.stringify(eval("(" + data + ")"))을 사용하였다.


클라이언트에서 보내는 json 문자열이다.




서버에 표시되는 화면이다.



2015년 9월 21일 월요일

자바스크립 정렬코드

자바스크립 정렬코드

 splice를 이용하여 .n순으로 정렬하고 n값이 같다면, s값이 큰값을 넣는다.

    var data_score = [];
    var s = "";
    var l = 0;
//기본 데이타 배열 만들기
    for(var i = 0; i < 10; i++){
        var unit = new Object;
        l += 2;
       
        unit.s = l;
        unit.n = l;
   
        data_score[i] = unit;
// 기본데이타 출력
        var str = "stage : " + data_score[i].n + ".. score : " + data_score[i].s;
       
        console.log(str);
    }
    console.log("-------------------------");
 
// 삽입할 데이타 만들기
    var unit_score = new Object;
    unit_score.n = 7;
    unit_score.s = 100;

// 데이타 삽입하기   
    var j = data_score.length;
    if(j == 0){
        data_score[j] = unit_score;
        j++;
    }else{
        for(var k = 1; k <= j; k++){
            if( data_score[j-k].n - unit_score.n > 0){
                if(k == j){
                    data_score.splice(0,0, unit_score);
                }     
            }else if(unit_score.n - data_score[j-k].n == 0){
                if(unit_score.s > data_score[j-k].s){
                    data_score[j-k].s = unit_score.s;
                   
                    break;
                }
            }else{
                data_score.splice(j-k+1,0, unit_score);
                break;
            }
        }
   
    }
//삽입되어진 결과물 출력   
    for(var i = 0; i < data_score.length; i++){
        var str = "stage : " + data_score[i].n + ".. score : " + data_score[i].s;
       
        console.log(str);
       
    }