0
Object
배열을 사용하고 특정 조건 집합과 일치하는 객체를 반환하는 함수를 만들어야합니다. 내가 지금까지 가지고하는 것은 매우 간단하다 : (의사) conditions
가 일치하는 개체가 소유해야 하나 개 이상의 속성을 나타내는 개체입니다자바 스크립트 - 여러 속성을 기반으로하는 객체 반환
// input: conditions: { prop1: "x", prop2: "z"}
// source: [{ prop1: "x", prop2: "y"}, { prop1: "x", prop2: "z"}];
// output: array of objects with the same properties & values
// ex:
// getObjects({ prop1: "x", prop2: "z"}, [{ prop1: "x", prop2: "y"}, { prop1: "x", prop2: "z"}]);
// returns: [{ prop1: "x", prop2: "z"}]
//....
var results = [];
for (var prop in obj) {
var match = false;
for (var cond in conditions) {
if (cond === prop && conditions[cond] == obj[prop]) {
match = true;
}
}
if (match) {
results.push(row);
}
}
return results;
.
문제는 이것이 어떻게 든 중복 객체를 반환한다는 것입니다. 이는 분명히 발생할 수 없습니다. 나는 이것을 달성하기위한 표준 방법이 있음을 안다. (아마도 101 가지 프로그래밍일지도 모른다.)하지만 내 Google-foo는 실패하고있다.
참고 : 여기서는 문맥 때문에 Array.prototype.filter
을 사용할 수 없습니다. 나는 한 세트 또는 여러 개의 테이블을 통해 실행 중이며 특정 기준과 일치하는 것을 반환하고자합니다.
는 기본적으로 아이디어가 입력 개체와 유사한 을있는 개체를 반환 "입니다 underscore와
당신이 결과 중복 객체가이 스크립트가 아닌 소스 테이블에서 행을 생성하는 쿼리에서 기인 하시겠습니까? – DevlshOne
@DevlshOne : 관련된 쿼리가 없습니다. 해당 테이블은 마크 업에서 수동으로 생성 된 '
기준 및 표 행 샘플에 대한 세부 정보를 제공해 주시겠습니까? – DevlshOne
답변
당신은 있었다
여러 속성이 일치하면 각 일치 항목에 '행'이 추가됩니다.
한 행당 한 번만 추가하십시오.이 루프는 조건부 루프 및 루프가 끝날 때마다 끝납니다.
그것은이다 중괄호 위치의 문제 :
출처
2014-04-28 20:19:52 GameAlchemist
이 논리에는 결함이 있습니다. 당신의 객체가'{a : 1, b : 2, c : 3} '이고 조건은 {a : 1, c : 4}라고 가정합니다. '{a : 1}'에 매치가 발견되면 match는 true로 설정됩니다. 제공된 의사 코드의 'c'가 –
과 일치하지 않으므로 항목이 결과에 잘못 추가됩니다. 모든 속성이 일치해야합니다. 조건이 {prop1 : "x", prop2 : "z"} 인 경우 객체 {{prop1 : "x", prop2 : "y"}'가 결과에 없습니다. –
@BrianGlaz 당신이 맞습니다. 충분히주의 깊게 읽으십시오. 이제 좋을지도. – GameAlchemist
:.?
당신이 기능을 구현하고자 할
출처
2014-04-28 19:50:03 juanpastas
기본적으로 그렇습니다. 그러나 어떤 조건이 충족되어야 하는지를 나타내는 물체를 받아 들일 수 있어야합니다. –
필터링 할 객체 배열을 전달할 수 있습니다 – juanpastas
관련 문제