본문 바로가기

개발(차근차근 기초)/Javascript

[Javascript] 자바스크립트 기초(2)

내용이 있는 문자열에 대한 NOT 처리

let str2 = "Hello World";

console.log(!str2);
false

#04. 비교 연산자

두 값간의 크기를 비교하는 식에 대한 참, 거짓을 판별한다.

1) 이상(>=), 초과(>), 이하(<=), 미만(<)


let x = 100;

let y = 50;



let compare1 = x >= y; // 이상

let compare2 = x > y; // 초과

let compare3 = x <= y; // 이하

let compare4 = x < y; // 미만



console.log(compare1);

console.log(compare2);

console.log(compare3);

console.log(compare4);
true

true

false

false

2) 같다(==, ===), 다르다(!=, !==)

두 값이 같음을 비교


let a1 = 1;

let a2 = 2;

let a3 = 2;



console.log(a1 == a2) // 두 값이 다르므로 결과는 false

console.log(a2 == a3) // 두 값이 같으므로 결과는 true

console.log(a1 === a2) // 두 값이 다르므로 결과는 false

console.log(a2 === a3) // 두 값이 같으므로 결과는 true
false

true

false

true

두 값이 다름을 비교


console.log(a1!=a2);

console.log(a2!=a3);

console.log(a1!==a2);

console.log(a2!==a3);


true

false

true

false

=====의 차이

내용을 비교

==는 값의 내용만을 비교하므로 문자열 "1"과 숫자 1을 같다고 판단한다.


console.log(1=="1"); // 숫자 1과 문자열 1을 같다고 판단함

console.log(true==1); // 0이 아닌 모든 수는 true이므로 같다고 판단함.
true

true

데이터 타입까지 비교

===는 값의 내용 뿐만 아니라 데이터 타입까지 동일해야만 true로 판단하기 때문에 문자열 "1"과 숫자1`을 다르다고 판단한다.

자바스크립트의 비교 연산자는 ===, !==를 더 권장합니다. (브라우저에서 노란색으로 경고창 표시하는거 꼴보기 싫으니까 쓰지 마세요.)


console.log(1=== "1");

console.log(true===1);

console.log(""===0);

console.log(""===false);
false

false

false

false

#05. 논리 연산자

두 개의 논리값(true 혹은 false)간에 AND(&&), OR(//) 연산을 수행한다.

1) AND 연산자

두 개의 연산에 사용되는 모든 값이 true인 경우만 결과가 true이고 그 외의 경우는 모든 결과가 false

| && | true | false |

|------------|------------|-------------|

| true | true | false |

| false| false | false |


console.log(true && true);

console.log(true && false);

console.log(false && true);

console.log(false && false);
true

false

false

false

console.log(true && true && true);

console.log(true && true && false);

console.log(false && false && true);

console.log(false && true && true);
true

false

false

false

2) OR 연산자

두 개의 연산에 사용되는 값중에서 하나라도 true라면 결과가 true이고 모든 값이 false인 경우만 결과가 false

| || | true | false |

|------------|------------|-------------|

| true | true | true |

| false| true | false |


console.log(true || true);

console.log(true || false);

console.log(false || true);

console.log(false || false);
true

true

true

false

console.log(true || true || true);

console.log(true || true || false);

console.log(false || false || true);

console.log(false || true || true);

console.log(false || false || false);
true

true

true

true

false


#06. 삼항 연산자

조건식 ? 참인경우 : 거짓인 경우의 형태로 세개의 항으로 이루어진 연산자

조건에 따라 반환되는 값이 선택적으로 결정된다

연산 결과를 직접 출력하기


console.log(10>5?"10은 5보다 큽니다." : "10은 5보다 크지 않습니다.");
10은 5보다 큽니다.

연산 결과를 다른 변수에 대입하기


let foo = 123;

let bar = 234;

let conditionValue = foo  === bar ? foo+bar : foo-bar;

console.log(conditionValue);
-111

#07. 연산자 우선 순위

| 순위 | 연산자 | 타입 |

|----|----|---|

| 1 | () | 괄호로 묶여 있는 수식 |

| 2 | !, ++, --, typeof | 부정, 증가, 감소, 형식 검사 |

| 3 | *, /, % | 곱셈, 나눗셈, 나머지 |

| 4 | +, - | 덧셈, 뺄셈 |

| 5 | <, <=, >, >= | 크기 비교 |

| 6 | ==, ===, !=, !== | 같거나 다름을 비교 |

| 7 | && | AND |

| 8 | \|\| | OR |

| 9 | ?: | 삼항연산자 |

| 10 | =, +=, -=, *=, /=, %= | 할당 |

조건문

#01. if 문

주어진 조건이 참인 경우에만 수행되는 문법적 표현.


if (조건식) {

    ... 조건이 참인 경우에 수행될 명령들 ...

}

1) 논리값을 사용한 경우


// 일반 구문

console.log("배고픈데");



var have_money = true;



if(have_money){

    console.log("식당에서")

}



// 일반 구문

console.log("밥을 먹자");
배고픈데

식당에서

밥을 먹자

2) 숫자형 값을 사용한 경우

숫자형인 경우 0은 거짓, 0이 아닌 모든 수는 참으로 식별한다.


var money = 10000;

//var money = 0;

if(money){

    console.log("택시를 타고");

}



console.log("집에 가자");
택시를 타고

집에 가자

3) 비교식을 사용한 조건문

() 안의 식이 참인 경우 {} 안의 구문이 실행된다.


var money = 12000



if(money >= 5000) {

    var k = money - 5000;

    console.log("선물을 사고" + k + "원 남는다.");

}
선물을 사고7000원 남는다.

4) 논리식을 사용한 조건문

AND(&&) 연산

모든 값이 TURE인 경우에만 결과가 TRUE


var x = true;

var y = true;



if(x&&y){

    console.log("주어진 조건은 참 입니다.");

}
주어진 조건은 참 입니다.

AND(&&)연산은 하나라도 거짓이 포함되어 있다면 결과가 거짓이므로 아래의 조건문은 실행되지 않는다.


var x = true;

var y = false;

if(x && y){

    console.log("주어진 조건은 참 입니다.");

}

OR (||) 연산

OR( || ) 연산은 하나라도 참이 포함되어 있다면 결과가 참이므로 아래의 조건문은 실행된다.


var x = true;

var y = false;

if(x||y){

    console.log("주어진 조건은 참 입니다.");

}
주어진 조건은 참 입니다.

5) NOT(!) 연산

! 연산자는 논리값을 부정한다.


var a = true;



//조건이 거짓이므로 출력되지 않음

if(!a){

    console.log("Hello World");

}

var b = false;

//조건이 참이므로 출력됨

if(!b){

    console.log("헬로월드");

}
헬로월드

논리식에 대한 NOT 연산

true && false는 거짓이지만 그 결과를 부정했으므로 결과는 이 된다.


var x = true;

var y = false;



if(!(x&&y)){

    console.log("주어진 조건은 참 입니다.");

}
주어진 조건은 참 입니다.

var x = true;

var y = false;



if(!(x||y)){

    console.log("주어진 조건은 참 입니다.");

}

#02. if ~ else 문

그렇지 않으면~~

  • if문은 조건이 참인 경우에만 수행되고 조건이 거짓인 경우는 수행되지 않는다.

  • if문 뒤에 else문을 덧붙여 조건이 거짓인 경우에 수행되는 구문을 추가할 수 있다.

  • else문은 if문 뒤에만 위치할 수 있고 독립적으로는 존재할 수 없다.


var age = 19;

if(age>19){

    console.log("성인입니다.");

} else {

    console.log("성인이 아닙니다.");

}
성인이 아닙니다.

#03. if ~ else if ~ else 문

여러가지 경우의 수를 나열하는 조건문.

순차적으로 조건을 판별하면서 가장 처음 만나는 인 조건의 블록을 수행하고 빠져나간다.


var point = 72;



if(point > 90){

    console.log("A학점");

} else if(point > 80){

    console.log("B학점");

} else if(point > 70){

    console.log("C학점");

} else if(point > 60){

    console.log("D학점");

} else{

    console.log("F학점");

}

#04. switch 문

1) 기본 구문

하나의 변수나 수식에 대한 여러가지 경우의 수를 나열하는 형식.

조건에 맞는 case 블록부터 break 키워드를 만날 때 까지 실행한다.


var point = "B";

switch(point){

    case 'A':

        console.log("A학점 입니다.");

        break;

    case 'B':

        console.log("B학점 입니다.");

        break;

    case 'C':

        console.log("C학점 입니다.");

        break;

    default:

        console.log("C학점 미만잡");

        break;

}
B학점 입니다.

2) break가 없는 경우

중단점이 없기 때문에 그 아래 블록까지 함께 실행된다.


var point = "B";

switch(point){

    case 'A':

        console.log("A학점 입니다.");

    case 'B':

        console.log("B학점 입니다.");     

    case 'C':

        console.log("C학점 입니다.");     

    default:

        console.log("C학점 미만잡");



}
B학점 입니다.

C학점 입니다.

C학점 미만잡

필요에 따라 의도적으로 break의 위치를 조절할 수 있다.


var point = "B";

switch(point){

    case 'A':

    case 'B':

    case 'C':

        console.log("이 과목을 Pass 했습니다.");

        break;

    default:

        console.log("이 과목을 Pass하지 못했습니다.");

        break;



}
이 과목을 Pass 했습니다.

반복문

주어진 조건을 충족하는 동안 {} 안의 구문을 반복적으로 수행

#01. while문

  • 주어진 조건이 참을 충족하는 동안 수행되는 문법

  • 초기식, 조건식, 증감식의 요소를 충족해야 성립된다.


초기식

while (조건식){

    ... 반복적으로 수행될 구문 ...

    증감식

}

var x = 1;//초기식 -> 반복에 사용될 조건값을 지정한다.

while(x<=10){//조건식 -> x가 10보다 작거나 같은 동안 반복수행

    var k = "x=" + x; //반복이 진행되는 동안 수행할 명령

    console.log(k);

    x = x+1; //증감식 -> 조건에 사용되는 값을 변경

}


x=1

x=2

x=3

x=4

x=5

x=6

x=7

x=8

x=9

x=10











11

1) 구구단 7단 출력하기


var y = 1; // 초기식

while(y < 10){ // 조건식 -> 10보다 작다이므로 10은 포함되지 않음

    var z = 7 * y; // 반복이 진행되는 동안 수행할 명령

    var str = "7 x " + y + " = " + z;

    console.log(str);



    y += 1; // 증감식 -> y가 1씩 증가함

}

2) 반복이 진행되는 동안 결과의 누적합 구하기

누적합을구하기 위해서는 합산에 사용할 변수를 0으로 초기화 해 놓고 반복문 안에서 누적 합산을 수행한다.

1부터 10까지의 총 합 구하기


var x = 1; //초기식

var sum = 0; //총 합을 누적해서 저장할 변수



while(x<=10){ //조건식 -> x가 10보다 작거나 같은 동안 반복 수행

    sum+=x;

    console.log("x=" + x + ", sum="+sum);

    x++;

}
x=1, sum=1

x=2, sum=3

x=3, sum=6

x=4, sum=10

x=5, sum=15

x=6, sum=21

x=7, sum=28

x=8, sum=36

x=9, sum=45

x=10, sum=55











10

3) 값의 변화단계 조절하기

0부터 100전(=99)까지 10씩 증가


var a = 0; //초기식

while(a<100){ //조건식

    var k = "a=" + a;

    console.log(k);

    a += 10; //증감식

}
a=0

a=10

a=20

a=30

a=40

a=50

a=60

a=70

a=80

a=90











100

10부터 0전(=1)까지 2씩 감소


var b = 10;

while(b>0){

    var k = "b=" + b;

    console.log(k);

    b -= 2;

}
b=10

b=8

b=6

b=4

b=2











0

#02. For 문

초기식, 조건식, 증감식이 하나의 괄호 () 안에 모두 명시되는 형태.


for(초기식; 조건식; 증감식){

    ...

}

실행 순서

  1. 초기식을 실행한다.

  2. 조건식을 판별한다.

    • 조건식이 참인 경우 {}안을 1회 실행하고 증감식으로 이동한다.

      • 증감식을 실행한 후 다시 조건식으로 이동한다.
    • 조건식이 거짓인 경우 {} 블록을 실행하지 않고 빠져나간다.


for(var x = 1; x<=10;x++){

    var k = "x=" + x;

    console.log(k);

}
x=1

x=2

x=3

x=4

x=5

x=6

x=7

x=8

x=9

x=10

1) 구구단 7단 출력하기

1부터 9까지 1씩 증가하면서 수행함



2) 반복이 진행되는 동안 결과의 누적

1부터 10까지의 총 합 구하기

반복이 시작되기 전에 값이 누적될 변수를 미리 준비해놓는다.



3) 값의 변화 단계 조절하기

0부터 99까지 10씩 증가하는 범위 안에서의 반복 수행



10부터 1까지 2씩 감소하는 범위 안에서의 반복 수행

#03. 반복문 안에서의 흐름 제어

반복을 몇 번 수행해야 하는지 판단할 수 없는 경우 무한루프 형태로 지정하고 특정 조건이 충족되는지에 따라 반복의 중단 여부를 결정하낟.

반복문의 흐름제어 기능을 갖는 키워드

  • next : 조건식으로 강제 이동

  • break : 현재 반복문을 강제로 종료하고 블록을 빠져 나간다.

1) while문을 사용한 무한루프 패턴


var y = 0 ;

while(true){

    var y = y+1;



    if(y%2 === 0){

        continue;

    }



    if(y>10){

        break;

    }



    console.log("Hello World :: " + y);

}
Hello World :: 1

Hello World :: 3

Hello World :: 5

Hello World :: 7

Hello World :: 9

2) for문을 사용한 무한루프 패턴

continue, break 키워드는 while문과 for문에서 모두 동일하게 동작한다.

배열

#01. 1차 배열

하나의 변수에 여러 개의 데이터를 그룹화 한 형태

1) 배열 만들기 (1)

배열의 선언

Javascript는 변수의 특성이 값이 할당 될 때 결정되기 때문에 선언은 일반 변수와 동일하다.

즉, 할당하기 전까지는 숫자, 문자열, 배열 등의 구분이 없다.


var myArr;

배열의 할당

대괄호([])안에 포함할 값들을 데이터 타입의 구분 없이 콤마(,)로 구분하여 나열한다.


myArr = [1, 2, 3.14, true, false, "hello", "world"];

console.log(myArr);
[ 1, 2, 3.14, true, false, 'hello', 'world' ]

2) 배열 만들기 (2)

Array 클래스를 사용한 할당

new Array(...) 형식으로 생성한다.

여기서 말하는 new 키워드를 사용하여 생성할 때 Array는 클래스에 해당합니다. Javascript에서의 객체와 클래스의 개념은 뒤에서 별도의 단원을 통해 다루도록 합니다.


var newArr1 = new Array("hello", "world", 1,2,3, true, false);

console.log(newArr1);
[ 'hello', 'world', 1, 2, 3, true, false ]

Array 클래스 사용시 주의할 점

new Array()로 배열을 생성할 때 ()안에 숫자 값 하나만 명시되는 경우, 숫자 값 만큼의 빈 칸을 갖는 배열이 생성된다.

배열의 각 칸은 모두 정의되지 않은 값(undefined)로 할당된다.


// 5라는 값을 원소로 갖는 한 칸으로 구성된 배열 만들기

var newArr2 = [5];

console.log(newArr2);



// 값이 존재하지 않는 5개의 빈 칸을 갖는 배열 만들기

var newArr3 = new Array(5);

console.log(newArr3)
[ 5 ]

[ <5 empty items> ]

배열의 원소에 접근하기

인덱스 번호를 통한 원소값 접근

배열의 각 원소는 0부터 시작하는 일련번호를 부여 받는데, 이를 배열의 인덱스 라고 한다.


var myArr = [1,2,3.14, true, false, "hello", "world"];

console.log(myArr[0]);

console.log(myArr[2]);

console.log(myArr[4]);

console.log(myArr[6]);
1

3.14

false

world

존재하지 않는 인덱스를 통한 접근

100번째 원소의 값을 출력하고자 할 경우 100번째 원소는 정의되어 있지 않으므로 undefined가 된다.


var item = myArr[100];

console.log(item);



if(item !== undefined){

    console.log("100번째 원소 존재함");

}else{

    console.log("100번째 원소 존재하지 않음");

}


undefined

100번째 원소 존재하지 않음

4) 배열의 크기

배열이름.length는 배열의 칸 수를 반환한다.

배열의 인덱스는 항상 0부터 크기-1까지 1씩 증가하면서 존재한다.


var myArr = [1,2,3.14];

console.log(myArr.length);
3

5) 반복문을 통한 활용

인덱스가 0부터 크기-1까지 1씩 증가한다는 특성을 활용하여 for문과 함께 사용하면 배열의 모든 원소에 대한 일괄 처리가 가능하다.


 // 5칸으로 구성된 빈 배열 생성

var myArr = new Array(5);

for(var i = 0 ; i < myArr.length; i++){

    myArr[i]= i*10;

}



console.log(myArr);
[ 0, 10, 20, 30, 40 ]

배열의 원소에 대한 총 합 구하기


var data = [ 10, 20, 30, 40, 50 ];



var sum = 0;



for(var i = 0 ; i < data.length; i++){

    sum += data[i];

}

console.log(sum);
150

배열의 원소 중에서 가장 큰 값 구하기


var data = [5,2,7,9,2];

var max = 0;



for(var i = 0 ; i<data.length; i++){

    console.log("max=" + max + ", data[" + i + "]=" + data[i]);



    if(data[i]>max){

       max = data[i];

        console.log(">> max에 "+ max+"를 복사");

       }

}

console.log("-------");

console.log("최대값 = " + max);
max=0, data[0]=5

>> max에 5를 복사

max=5, data[1]=2

max=5, data[2]=7

>> max에 7를 복사

max=7, data[3]=9

>> max에 9를 복사

max=9, data[4]=2

-------

최대값 = 9

배열의 순서를 뒤집기

반복 회수를 구하기 위한 연산
  1. 원소가 5개일 경우 반복 회수 : 2회

    5/2를 연산한다. 나머지는 버리게 되므로 2가 된다.

  2. 원소가 6개일 경우 반복 회수 : 3회

    6/2를 연산한다. 즉 배열의 길이/2를 구한다.

i번째 원소와 맞교환 하기 위한 반대쪽 원소의 인덱스

배열의 길이 -i -1;


var data = [1,5,2,4,3];

console.log(data);



for(var i = 0 ; i<data.length/2 ; i++ ){



    var k = data.length-i-1;



    var temp=data[i];

    data[i]=data[k];

    data[k]=temp;





        //i번째 원소와 k번째 원소 교환

}

console.log(data);
[ 1, 5, 2, 4, 3 ]

[ 3, 4, 2, 5, 1 ]

#02. 2차 배열

의 개념만 존재하는 1차 배열에 의 개념을 추가한 형태가 2차 배열이다.

좀 더 정확한 개념은 1차 배열의 각 원소가 다른 배열로 구성된 형태라고 보는 것이 맞다.

1) 2차 배열 생성하기

배열의 원소로 다른 배열 포함하기


var a = [1,2,3];

var b = [4,5,6];

var myArr = [a,b];

console.log(myArr);
[ [ 1, 2, 3 ], [ 4, 5, 6 ] ]

축약 표현

[]를 사용하여 1차원을 표현하고 그 안에 다시 []를 콤마로 구분하여 2차원을 구성한다.


var myArr = [ [1,2,3], [4,5,6] ];

console.log(myArr);
[ [ 1, 2, 3 ], [ 4, 5, 6 ] ]

2) 2차 배열의 원소에 접근하기

2행 3열인 경우 행의 인덱스는 0부터 1까지, 열의 인덱스는 0부터 2까지 존재한다.

배열에 저장된 원소에 접근하기 위해서는 변수이름 뒤에 행, 열의 순서로 인덱스를 명시한다.

배열 원소 변경하기

| | 0번째 열 | 1번째 열 | 2번째 열 |

|--|--|--|--|

| 0번째 행 | (0,0) = 10 | (0,1) = 20 | (0,2) = 30 |

| 1번째 행 | (1,0) = 40 | (1,1) = 50 | (1,2) = 60 |


myArr[0][0] = 10; //0행 0열

myArr[0][1] = 20; //0행 1열

myArr[0][2] = 30; //0행 2열



myArr[1][0] = 40; //1행 0열

myArr[1][1] = 50; //1행 1열

myArr[1][2] = 60; //1행 2열

console.log(myArr);


[ [ 10, 20, 30 ], [ 40, 50, 60 ] ]

배열 원소 개별 출력


console.log(myArr[0][0]);

console.log(myArr[0][1]);

console.log(myArr[0][2]);



console.log(myArr[1][0]);

console.log(myArr[1][1]);

console.log(myArr[1][2]);
10

20

30

40

50

60

3) Array 클래스를 사용한 2차 배열 생성

배열의 원소로 다른 배열 포함하기

1차 배열의 각 원소에 또 다른 배열이 포함되는 형식으로 구성한다.


var a = new Array(1,2,3);

var b = new Array(4,5,6);

var data = new Array(a,b);

console.log(data);
[ [ 1, 2, 3 ], [ 4, 5, 6 ] ]

축약표현


var data = new Array( new Array(1,2,3), new Array(4,5,6));

console.log(data);
[ [ 1, 2, 3 ], [ 4, 5, 6 ] ]

4) 가변배열

2차 배열의 정확한 개념은 1차 배열의 각 원소가 다른 배열로 구성된 형태이다. 원소로서 포함되는 각 배열의 크기가 동일하지 않은 경우를 가변 배열이라고 한다.

항상 배열의 모든 행이 동일한 열로 구성되는 것은 아니다. (모든 줄의 칸 수가 같다는 보장은 없다는 의미)

가변배열이 자주 등장하는 것은 아니다. 95% 이상의 경우가 모든 행마다 열 크기가 동일한 경우이다.


var a = [1,3,5,7,9];

var b = [2,4,6];

var data = [a,b];

console.log(data);
[ [ 1, 3, 5, 7, 9 ], [ 2, 4, 6 ] ]

var data = [[1,3,5,7,9], [2,4,6]];

console.log(data);
[ [ 1, 3, 5, 7, 9 ], [ 2, 4, 6 ] ]

5) 2차 배열의 행, 열 크기 구하기

행의 크기

2차 배열에 대한 길이를 직접 구하면 행의 크기를 알 수 있다.


var rowSize = data.length;

console.log(rowSize);
2

열의 크기

2차 배열의 모든 행에 대한 열 크기가 항상 동일하다는 보장이 없기 때문에 열의 크기는 각 행마다 개별적으로 구해야 한다.


var colSize0 = data[0].length;

var colSize1 = data[1].length;

console.log(colSize0);

console.log(colSize1);
5

3

6) 2차 배열과 반복문

배열의 모든 원소 스캔하기

2차 배열의 모든 원소를 반복문으로 스캔하기 위해서는 중첩 반복문을 사용해야 한다.

이 때 부모 반복문은 행에 대해 관여하고, 자식 반복문은 열에 대해 관여한다.


var twoArray = [ [1,2], [10, 20, 30, 40]];



for (var i=0; i<twoArray.length; i++){

    console.log(i + "번째 행 ---------");



    for(var j=0; j<twoArray[i].length; j++){

        console.log(" :::: " + j + "번째 열 >> " + twoArray[i][j]);

    }

}
0번째 행 ---------

 :::: 0번째 열 >> 1

 :::: 1번째 열 >> 2

1번째 행 ---------

 :::: 0번째 열 >> 10

 :::: 1번째 열 >> 20

 :::: 2번째 열 >> 30

 :::: 3번째 열 >> 40

7) 예제

성적 구하기

아래의 성적표를 보고 학생 이름을 1차 배열로, 학생들의 점수를 2차 배열로 표현한 뒤 각 학생별로 총점과 평균을 구해 출력하시오.

|| 국어 | 영어 | 수학 |

|------|------|------|-------|

| 철수 | 92 | 81 | 76 |

| 영희 | 72 | 95 | 84 |

| 민혁 | 80 | 86 | 98 |


var grade = [

    ["철수",92,81,76],

    ["영희",72,95,84],

    ["민혁", 80,86,98],

];

var total;



for(i = 0 ; i<grade.length ; i++){

    total = 0; 

    for(j = 1; j < grade[i].length;j++){

            total+=grade[i][j];

    }

    console.log(grade[i][0] + "의 총점 : " + total);

    console.log(grade[i][0] + "의 평균 : " + total/3);





}
철수의 총점 : 249

철수의 평균 : 83

영희의 총점 : 251

영희의 평균 : 83.66666666666667

민혁의 총점 : 264

민혁의 평균 : 88

순차적으로 증가하는 값 할당하기

5행 7열로 구성된 2차 배열을 준비하고 배열의 모든 칸에 1부터 순차적으로 증가하는 값을 대입하세요.


var myArr = new Array(5);

for(var i = 0 ; i < myArr.length ; i++){

    myArr[i]= new Array(7)

}

var cnt = 1;



for(var i = 0 ; i< myArr.length; i++){

    for(var j = 0 ; j<myArr[i].length;j++){

        myArr[i][j] = cnt++;

    }

}

console.log(myArr);
[

  [

    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

  ]

]