2017-02-24 1 views
0

특정 키 - 값 쌍이 포함 된 경우 배열에서 객체를 어떻게 반환합니까?키 값 쌍을 포함하는 경우 배열의 객체 반환

하나뿐 아니라 모든 키 값 쌍이 있으면 반환해야합니다. 예

,

1 인수로 객체의 배열이 기능하고, 제 2 인수로 주어진 키 값 쌍 객체

whatIsInAName([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }); 

반환한다

[{ "a": 1, "b": 2 }, { "a": 1, "b": 2, "c": 2 }] 
+1

당신은'모든 키 값 pairs'을 가지고 무엇을 의미합니까? – Rajesh

+0

[값 또는 속성별로 객체의 배열에서 JavaScript 객체 가져 오기] (http://stackoverflow.com/questions/13964155/get-javascript-object-from-array-of-objects-by-value-or- 재산) – Rajesh

답변

1

filter()every()으로이 작업을 수행 할 수 있습니다. Array#every 방법

function whatIsInAName(a, b) { 
 
    return a.filter(function(e) { 
 
    return Object.keys(b).every(function(c) { 
 
     return e[c] == b[c] 
 
    }) 
 
    }) 
 
} 
 

 
console.log(whatIsInAName([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }))

+0

도움에 감사드립니다! 고마워! –

0

사용 Array#filter 방법.

function whatIsInAName(arr, obj) { 
 
    // get the keys array 
 
    var keys = Object.keys(obj); 
 
    // iterate over the array 
 
    return arr.filter(function(o) { 
 
    // iterate over the key array and check every property 
 
    // is present in the object with the same value 
 
    return keys.every(function(k) { 
 
     return obj[k] === o[k]; 
 
    }) 
 
    }) 
 
} 
 

 

 
console.log(whatIsInAName([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }));

+0

감사! 당신의 도움을 주셔서 감사합니다! –

0

당신은 패턴의 키와 값에 대한 검사와 함께 배열을 필터링 할 수 있습니다.

function whatIsInAName(array, pattern) { 
 
    var keys = Object.keys(pattern); 
 
    return array.filter(function (o) { 
 
     return keys.every(function (k) { 
 
      return pattern[k] === o[k]; 
 
     }); 
 
    }); 
 
} 
 

 
console.log(whatIsInAName([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }));

+1

'pattern [k] = o [k]'이것은 asignment이고, 비교는 안된다;) 나는이 부분을 루프 밖으로 제거한다. (Object.keys (pattern)) – Thomas

1

사용 underscore.js. 간단 해.

function whatIsInAName(a, b){ 
 
\t return _.where(a, b); 
 
} 
 
var data = whatIsInAName([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }); 
 

 
console.log(data);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

관련 문제