2014-03-28 2 views
0

나는이 간단한 스크립트가 : 대신에,

D README.md 
D CONTRIBUTING.md 

내가 얻을 필요가 :

var stdout = "A test.js\nD README.md\nD CONTRIBUTING.md\nM something.txt"; 

var out = $.grep(stdout.split("\n"), function (row) { 
    return (row.substring(0, 1) == "D"); 
}); 
그것은 D로 시작하는 경우에만 행 배열을 반환

JSFIddle [x]

,이 결과 , D로 시작하는 행을 가진 배열이 있지만 행에서 D을 제거해야하므로이 결과가 필요합니다.

README.md 
CONTRIBUTING.md 

난 단지 $.map 나는 조건이 충족되지 않은 경우에는 아무 것도 반환하지 않습니다 수있는 방법을 찾을 수 없습니다 사용하는 경우...

var out = stdout.split("\n").map(function (row) { 
    return (row.substring(0, 1) == "D") ? row.substring(1).trim() : null; 
}); 
// returns: [null, 'README.md', 'CONTRIBUTING.md', null] 
// I need: ['README.md', 'CONTRIBUTING.md'] 

은 내가 $.map의 혼합을 사용한다고 생각합니다 $.grep하지만이 간단한 작업에는 너무 많은 코드가 필요합니다.
이것을 달성하는 가장 좋은 방법은 무엇입니까?

답변

2

그냥 $.map() 사용할 수 있습니다 - 당신은 $ .MAP() 콜백에서 undefined을 반환하는 경우, 그 값이

를 무시됩니다
var regex = /^D/; 
var out = $.map(stdout.split("\n"), function (row) { 
    return regex.test(row) ? $.trim(row.substring(1)) : undefined 
}); 

데모 : Fiddle

+0

감사합니다! 몰랐다. –

관련 문제