본문 바로가기

잡단한것들/코딩연습장

file.slice is not a function, 비배열 객체, 유사배열

File 객체를 콘솔로 찍어보면 배열로 표시된다.

하지만 리얼 배열은 아니므로 배열 메서드를 사용할 수 없다.

 

const blob = new Blob([].slice.call(file, from, to));

위와 같이 []배열에 담아준뒤 slice메서드를 실행 한 후 blob으로 전송하기 위해 다시 blob객체에 담아줬다.

하지만 서버단에 보낸 param정보들을 split하려니깐 또 에러가 나는데

(name || '').split('.').pop();

 

다음과 같이 name값이 없으면 빈문자열을 넣어주니 잘 된다.

 

splice는 잘라내기 slice는 부분복사(원본 배열 손상x)

 

* 더 쉬운 방법

Array.from(유사배열객체);
  • Array.from() 메서드는 유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운Array 객체를 만든다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

 

Array.prototype.splice() - JavaScript | MDN

splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.

developer.mozilla.org

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

 

Array.prototype.slice() - JavaScript | MDN

slice() 메서드는 어떤 배열의 begin부터 end까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환합니다. 원본 배열은 바뀌지 않습니다.

developer.mozilla.org

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/pop

 

Array.prototype.pop() - JavaScript | MDN

pop() 메서드는 배열에서 마지막 요소를 제거하고 그 요소를 반환합니다.

developer.mozilla.org

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/call

 

Function.prototype.call() - JavaScript | MDN

call() 메소드는 주어진 this 값 및 각각 전달된 인수와 함께 함수를 호출합니다.

developer.mozilla.org