# Array.From 사용법 / Array 복사 방법

  -  사용법 : Array.from(arrayLike[, mapFn[, thisArg]])

  -  예시 : Array.from( 복사할 array , 복사하면서 수행할 function)

  -  주의 사항 : Array 복사 얇은(Shallow) 복사로 됨.

 

# 예시 

// Array 얕은 복사 방법
var a = [1, 2, 3];
console.log("a" , a)
// Array A를 복사
var b = Array.from(a);
console.log("b" , b)

// Array A를 복사하면 +1 증가
var c = Array.from(a, function (x) {
console.log("c" , c)
    return x + 1;
});

// Array A를 복사하면 제곱하기
var d = Array.from(a, x => x * x);
console.log("d" , d)

// 부록 : es6 Array 복사
var e = [...a];
console.log("e" , e)

// Array 안에 Object 형식도 복사 가능
var f = Array.from([{ a : 1 , b: 2}]);
console.log("f" , f)

// 부록 : 깊은 복사 방법 
var deep_copy = JSON.parse(JSON.stringify(a));
console.log("deep_copy" , deep_copy)

 

# 결과화면 

블로그 이미지

미나미나미

,

1-1. 테스트

for(let j = 0; j < 10; j++){
    var arr = [];
    console.time("1-1.calculatingTime")
    for (var i = 1; i <= 1000000; i++) {
        arr[i] = i;
    }

    console.timeEnd('1-1.calculatingTime');

    //  -------------------------------------
    var arr = [];
    console.time("2-1.calculatingTime")
    for (var i = 1; i <= 1000000; i++) {
        arr.push(i);
    }
    console.timeEnd('2-1.calculatingTime');
}

   1-2. 결과 :

        익스의 경우 arr[i] = i가 성능상 빠름,

        크롬의 경우 arr[i]가 빠르다고 생각하여 테스트를 진행하였으나,

        엎치락뒤치락 하는 기록이 있음 (평균값. arr[i] = i : 20.79489746ms , arr.push(i) : 24.61420898)

     


 2-1. 테스트 

var j = 0;
for (j = 0; j < 10; j++) {
    var sum = 0;
    var arr = [];
    console.time("1.calculatingTime")
    for (var i = 1; i <= 1000000; i++) {
        sum += i;
        arr[i] = sum;
    }

    console.timeEnd('1.calculatingTime');
}
//  -------------------------------------
var j = 0;
for (j = 0; j < 10; j++) {
    var sum = 0;
    var arr = [];
    console.time("2.calculatingTime")
    for (var i = 1; i <= 1000000; i++) {
        sum += i;
        arr.push(sum);
    }

    console.timeEnd('2.calculatingTime');
}

2-2 결과 

        익스의 경우 여전히 arr[i] = i가 성능상 빠름,

        크롬의 경우 엎치락뒤치락 하는 기록이 있음 (평균값. arr[i] = i : 75.38521ms , arr.push(i) : 78.85928)


 

블로그 이미지

미나미나미

,