2014-06-05 3 views
0

다른 배열의 일치 항목을 기반으로 배열을 필터링하려면 밑줄을 사용하려고합니다.다른 배열을 기반으로 배열 필터링

나는 내가이

[0: "A", 1: "B"] 
과 같은 categoryNames라는 또 다른 배열에 존재하는 요소 만 유지하도록이 배열을 필터링 할이

[{category: "A"}, {category: "B"}, {category: "C"}] 

과 같은 배열 chartOptions.series이

내가이 결과

[{category: "A"}, {category: "B"}] 

그에게 기대하는이 시나리오를 감안할 때 내가 지금까지 가지고있는 것.

chartOptions.series = _.filter(chartOptions.series, function(series) { 
    return _.where(categoryNames, {"": series.category}); 
}); 

이것은 작동하지 않으며 아무것도 필터링하지 않습니다. 내가 뭘 놓치고 있니? [0: "A", 1: "B"] 실제로 ["A", "B"]이라고 가정

+1

'[{ "A"}, { "B"}]'는 구문 적으로 유효하지 않습니다. 어떻게 실제로 보이나요? 확실하지 않다면'JSON.stringify()'를 사용하십시오. – Bergi

+0

'[{ "A"}, { "B"}]'이 (가) 잘못되었습니다. ????? – Jai

답변

2

, 당신은 _.contains를 사용할 수 있습니다

var categoryNames = ["A", "B"]; 
_.filter(chartOptions.series, function(series) { 
    return _.contains(categoryNames, series.category) 
}); 

당신이 원하는 것을해야한다.

+0

간결성을 위해'contains'를'categoryNames.indexOf (series.category)> = 0'으로 대체하는 것이 가치가 있을지도 모른다. –

관련 문제