다음 코드는 잘 작동합니다.
var stores = new Array();
stores[0] = { ItemNumber: "2001", Code: "001", Qty: "1", OH: "1" };
stores[1] = { ItemNumber: "2002", Code: "002", Qty: "3", OH: "2" };
stores[2] = { ItemNumber: "2003", Code: "003", Qty: "5", OH: "8" };
stores[3] = { ItemNumber: "2001", Code: "004", Qty: "10", OH: "90" };
var item = "2001";
var code = "001";
var searchResult = jQuery.grep(stores, function (store, indexInArray) {
var found = false;
if (item != "" && code != "") {
found = (store.Code == code) && (store.ItemNumber == item);
}
else if (item != "" && code == "") {
found = (store.ItemNumber == item);
}
else if (code != "" && item == "") {
found = (store.Code == code);
}
return found;
});
$.each(searchResult, function (index, obj) {
console.log("found: " + obj.Code);
});
JSFiddle : http://jsfiddle.net/hwpnbkm3/
그러나 너무 많은 if / else 문이 있기 때문에 코드가 마음에 들지 않습니다. 또한 Qty 또는 OH로 검색하고 싶다면 훨씬 더 복잡해질 것입니다. 여러 개의 if / else 문없이이 배열을 검색하는 방법이 있습니까? 배열을 검색하는 동적 쿼리를 작성할 수 있습니까?
기능을 다음과 같이 단순화 할 수 있습니다.
return (item == "" || store.ItemNumber == item) &&
(code == "" || store.Code == code) &&
(item != "" || code != "");
그러나 내가 대신 권장하는 것은 쿼리에 대한 개별 변수를 갖는 대신 개체를 만드는 것입니다.
var stores = new Array();
stores[0] = { ItemNumber: "2001", Code: "001", Qty: "1", OH: "1" };
stores[1] = { ItemNumber: "2002", Code: "002", Qty: "3", OH: "2" };
stores[2] = { ItemNumber: "2003", Code: "003", Qty: "5", OH: "8" };
stores[3] = { ItemNumber: "2001", Code: "004", Qty: "10", OH: "90" };
var query = { ItemNumber: "2001", Code: "001" };
var searchResult = jQuery.grep(stores, function (store, indexInArray) {
var found = false;
for(var n in query) {
if(query[n] != "") {
if(query[n] != store[n]) {
found = false;
break;
}
found = true;
}
}
return found;
});
$.each(searchResult, function (index, obj) {
console.log("found: " + obj.Code);
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다