2017-03-08 4 views
2

예를 들어 최대 3 개의 요소를 선택할 수 있습니다. 요소를 선택할 때마다 배열에 저장됩니다. bvar objects = ["a", "b"]을 선택한 다음 avar objects = ["a"];을 선택한 다음개체의 여러 값을 확인하려면 어떻게합니까?

이제 배열에서 객체를 찾지 않고 내 코드가 작동하지만이 코드를 이와 같이 만들고 싶습니다.

그래서 지금은 option 요소를 가져 와서 배열로 찾습니다. 그러나 언제든지 새로운 option을 선택할 때마다 검색 목록을 집어 넣고 싶습니다. 첫 번째 점에서이 모든 가능성에 a 옵션 만 찾는 경우가 {["a","b","c"]} 또는 {["a","c","b"]} 또는 {["c","b","a"]}

var filtered = s.Data.results.filter(function (el) {return el.result.indexOf(option) > -1}); 
+0

어쩌면 당신은 해시 테이블이나 설정이나지도 등의 객체처럼 다른 접근 방법을 찾습니다. –

+0

@ NinaScholz 너무 많은 요소가 있으므로 간단하게 유지하려고합니다. –

+0

@ NinaScholz 질문을 이해하면 더 명확하게 할 수 있습니까? – Weedoze

답변

2

없이 호출이를 위해 내장하고있다 lodash하지 않았다 결과의 내부 배열.

var results = [["a", "c", "b"], ["a", "c", "b"], ["b", "c", "d"], ["b", "c", "e"]], 
 
    option = ["a", "b"], 
 
    filtered = results.filter(function (a) { 
 
     return option.every(function (b) { 
 
      return a.indexOf(b) !== -1; 
 
     }); 
 
    }); 
 
     
 
console.log(filtered);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

을 할 수있는 곳 그래서 지금은 내가 완전히 확실하지 않다 ab를 찾습니다 무엇 ' 다시 묻지 만 옵션 컬렉션으로 결과 배열을 필터링하려는 것 같습니다. 다음과 같이 입력하십시오 :

var options = ["a", "b"]; 
var results = ["c", "b", "a"]; 

var filtered = results.filter(result => options.indexOf(result) !== -1); 
0

원하지 않는 항목을 제거하려면 옵션 목록을 줄여야합니다. 나는

reducedOptions = s.Data.results.reduce((acc, curr) => { 
    if (el.result.indexOf(curr) > -1) { 
    acc.push(curr) 
    } 
    return acc; 
}, []) 

는 또한가있는 경우 당신은 options의 모든 요소에 대한 검사와 결과 배열을 필터링 할 수있는 일이

https://lodash.com/docs/4.17.4#without

관련 문제