2017-12-03 11 views
0

이 코드가 있습니다.오브젝트의 하위 문자열을 찾으십시오.

var abc = { QSX: 'V',WRT: 'VC',ETH: 'VC',RHY: 'VC',TFG: 'VC',YKL: 'VC'} 
var filtered = _.pick(abc, ['HY', 'H']); //Lodash 
console.log(filtered); 

이 출력 다음해야

= {RHY 'VC'ETH 'VC'} 여과

사람들이 포함 된 두 개의 항목이므로 하위 문자열 'HY'와 'H'. 그러나 첫 번째 항목 만 출력합니다. 누군가 나를 알아내는 것을 도와 줄 수 있습니까?

+0

['_

는 보라 .pickBy (ob 그러나, 수동으로 모든 입력을 통해'||'를 추가해야합니다. OP가 필요하다고 생각합니다. (예 : [predicate = _. identity])'] (https://lodash.com/docs/4.17.4#pickBy) – Andreas

답변

1

Lodash는 정확한 속성 이름이 _.pick과 일치합니다. 주어진 항목과 부분적으로 일치하는 속성을 선택하지 않습니다.

부분 일치를 원할 경우 _.pickBy을 대신 사용해야합니다.

+0

한 번에 모든 입력을 배열로 전달할 수 있습니다. –

+0

@KoushikChatterjee - 잘하려면 여러 가지 방법이 있습니다. 내 솔루션이 완벽한 증거라고 말하면서 OP가 필요로하는 것입니다. OP가 자신이 원하는 것에 한 걸음 더 가까워지면 솔루션은 필요에 따라 더 변경 될 수 있습니다. – 31piy

1

var abc = { 
 
    QSX: 'V', 
 
    WRT: 'VC', 
 
    ETH: 'VC', 
 
    RHY: 'VC', 
 
    TFG: 'VC', 
 
    YKL: 'VC' 
 
} 
 
var filterBase = ['HY', 'H'] 
 

 
var filtered = _.pickBy(abc, function(value, key) { 
 
    var isThere = _.find(filterBase, function(o) { 
 
    
 
    return key.indexOf(o) !== -1 
 
    }) 
 
    return isThere 
 
}); //Lodash 
 
console.log(filtered);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

당신이 시도 할 수

var abc = { QSX: 'V',WRT: 'VC',ETH: 'VC',RHY: 'VC',TFG: 'VC',YKL: 'VC'} 
 
var filtered = _.pick(abc, ['HY', 'H']); //Lodash 
 
console.log(filtered); 
 
filtered = _.pickBy(abc, (v, k) => k.includes('HY') || k.includes('H')); 
 
console.log(filtered);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

. 희망이 있습니다

0

lodash#pickBy과 기본 filter (단, lodash를 사용할 수는 있지만 필수는 아닙니다)을 한 라이너로 간단히 수행 할 수 있습니다.

filterWith

여기

_.pickBy(abc, (v,k) => filterWith.find(f=> k.match(f)));

가 작업 조각 인 필터 입력으로 배열 가정 :

var abc = { QSX: 'V',WRT: 'VC',ETH: 'VC',RHY: 'VC',TFG: 'VC',YKL: 'VC'}; 
 
var filterWith = ['HY', 'H']; 
 

 
var filtededData = _.pickBy(abc, (v,k) => filterWith.find(f=> k.match(f))); 
 

 
console.log(filtededData)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>