2016-10-05 4 views
0

나는 내 마음을 잃고 있어야합니다. 배열 배열이 있다고 가정합니다. 하위 배열을 필터링하고 필터링 된 하위 배열 배열로 끝내기를 원합니다. 내 필터가 "3보다 큼"이라고 가정 해보십시오. 그래서배열의 필터 하위 배열

let nested = [[1,2],[3,4],[5,6]] 
// [[],[4][5,6]] 

일부 밑줄 jiggery-pokery 실패 후, 나는 정기적으로 루프를 시도했다.

for (var i = 0; i < nested.length; i++){ 
    for (var j = 0; j < nested[i].length; j++){ 
    if (nested[i][j] <= 3){ 
     (nested[i]).splice(j, 1) 
    } 
    } 
} 

그러나 첫 번째 하위 배열에서 1 만 제거합니다. 스플 라이스가 기본 배열을 변형시키고 그 길이를 고려하여 업데이트 될 것이라고 생각 했겠지만, 그렇지 않을 수도 있습니다. 아니면 완전히 다른 것이 잘못 될 수도 있습니다. 아마 명백하다; 그것을 보지 못했다. 공상적이고 간단한 도움이 감사 드리겠습니다.

+2

'nested.map (편곡 => arr.filter (X => X <= 3))' – vlaz

+1

을 또한, 더 구체적으로 구현은 실패합니다. 왜냐하면 배열을 'splice'할 때 _decreases_하지만 여전히 동일한 위치에서 루핑을 유지하기 때문입니다. – vlaz

+0

감사합니다. 그거였다. – rswerve

답변

3

가능할 수도 있습니다.

var nested = [[1,2],[3,4],[5,6]], 
 
    limit = 3, 
 
    result = nested.map(a => a.filter(e => e > limit)); 
 
console.log(result);

+0

@ vlaz의 코멘트와 중복 가능 –

+0

@HappyCoding 나는 그렇게 생각하지 않는다. – Redu

2

당신은 ES6이없는 경우 :

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

nested.map(
    function(x) { 
    return x.filter(
     function(y){ 
     return y > 3 
     } 
    ) 
    } 
)