JavaScript로 배열을 쉽게 자르는 방법은 무엇입니까?


102

Linq에는를 Take()구현하는 모든 요소에서 주어진 수의 요소를 반환하기 위해 호출되는 편리한 연산자 메서드 가 있습니다 IEnumerable. 배열 작업을 위해 jQuery에 비슷한 것이 있습니까?

또는 다르게 질문합니다. Javascript에서 배열을 어떻게자를 수 있습니까?


22
여러분, jQuery보다 먼저 JavaScript를 배우십시오. 내일의 질문은 "jQuery가 배열 외에 어떤 다른 데이터 유형을 노출합니까?"라는 질문이 될 것입니다.
Ionuț G. Stan

답변:


184

슬라이스 방법은

array.slice(0, 4);

처음 4 개의 요소를 반환합니다.

다른 값을 버리고 싶다면 변수에 다시 할당하는 것을 잊지 마십시오.

참고 : 이것은 일반 자바 스크립트이며 jquery가 필요하지 않습니다.


15
(0,4)는 처음 5가 아닌 처음 4를 반환합니까?
Simon Keep

11
그것은 사실이 아닙니다. Simon Keep이 정확합니다. .slice () 메서드의 두 번째 인수는 반환 될 마지막 요소 의 배열 위치 입니다. array.slice (0, 4)는 요소 0, 1, 2, 3 (총 4 개 요소)을 반환합니다. 두 번째 인수를 컷오프 지점으로 생각하십시오. 여기서 .slice (0, x)는 배열의 시작 부분에서 x를 포함 하지 않는 모든 요소를 ​​반환합니다 .
Bungle

1
end포함되지 않은 경우 @SimonKeep이 맞습니다. MDN developer.mozilla.org/en-US/docs/JavaScript/Reference/…
AsTeR 2013

2
변수에 다시 할당하는 것을 잊지
마십시오.

6
나쁜 방법은 새로운 배열 인스턴스를 만들고 js를 코딩하는 것이 나쁜 생각이 아닐 때 메모리 사용량을 염두에 두는 것입니다.
G. Ghez

125

(2 년 후 ...) 진정으로 배열을 자르려는 경우 다음 length속성 을 사용할 수도 있습니다 .

var stooges = ["Moe", "Larry", "Shemp", "Curly", "Joe"];
stooges.length = 3; // now stooges is ["Moe", "Larry", "Shemp"]

참고 : 현재 길이보다 길이를 지정하면 아래와 같이 정의되지 않은 배열 요소가 도입됩니다.

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = 5;
alert(typeof stooges[4]); // alerts "undefined"

편집하다:

@twhitehead가 아래에 언급했듯이 정의되지 않은 요소의 추가는 다음과 같이 피할 수 있습니다.

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = Math.min(stooges.length, 5); 
alert(stooges.length)// alerts "3"

5
코드에서 이것을 보았을 때 처음으로 놀랐습니다 ...하지만 이것이 가장 좋은 방법입니다 (인덱스 0에서 자르는 경우) davidwalsh.name/empty-array
kumarharsh

5
이것은 놀랍도록 간단한 해결책입니다.
Dominique

3
가비지 컬렉션은 어떨까요?
G. Ghez

1
@JonathanM 실제로는 null 값이 도입되지 않았습니다. 새 변수는 선언되었지만 값이 할당되지 않았기 때문에 정의되지 않습니다.
Håvard Geithus 2015-06-15

3
놀랄 만한! 이 방법은 Array새로운 Array.
Roomy

22

자르는 방법 (끝에서 요소를 제거하여 배열 수정)하는 방법을 묻는 경우 splice 사용하십시오 .

var a1 = [2,4,6,8];
var a2 = a1.splice(-2,2); // a1=[2,4], a2=[6,8]

원본을 수정하지 않고 배열의 하위 집합을 검색하는 방법을 묻는 경우 slice 를 사용하십시오 .

var a1 = [2,4,6,8];
var a2 = a1.slice(-2); // a1=[2,4,6,8], a2=[6,8]

스플 라이스 수정, 슬라이스 액세스를 기억하십시오. 첫 번째 인수 인 음수는 배열 끝의 인덱스를 나타냅니다.


11

.length 속성을 더 낮은 값으로 설정합니다.

공식 문서 : Array.prototype.length


3
배열의 모든 요소를 ​​제거하려면 길이를 0으로 설정하는 것이 가장 쉽습니다.
hanmari


1

배열에서 요소를 선택적으로 끌어 내려면 jQuery.grep 메소드를 사용할 수 있습니다 .

(jQuery 문서에서)

var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ];

$("div").text(arr.join(", "));

arr = jQuery.grep(arr, function(n, i){
  return (n != 5 && i > 4);
});

$("p").text(arr.join(", "));

arr = jQuery.grep(arr, function (a) { return a != 9; });
$("span").text(arr.join(", "));
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.