일치하는 속성에 대한 배열 검색
배열이 있고 레스토랑 이름을 반환해야하지만 "food"속성의 값만 알고 있습니다 (색인 번호가 아님).
예를 들어 "chicken"만 알고있는 경우 어떻게 "KFC"를 반환 할 수 있습니까?
restaurants =
[
{"restaurant" : { "name" : "McDonald's", "food" : "burger" }},
{"restaurant" : { "name" : "KFC", "food" : "chicken" }},
{"restaurant" : { "name" : "Pizza Hut", "food" : "pizza" }}
];
for(var i = 0; i < restaurants.length; i++)
{
if(restaurants[i].restaurant.food == 'chicken')
{
return restaurants[i].restaurant.name;
}
}
이 경우 ECMAscript 5 Array.filter를 사용합니다. 다음 솔루션에는 모든 버전의 IE에 존재하지 않는 array.filter ()가 필요합니다.
Shim은 MDN Array.filter 또는 ES5-shim 에서 찾을 수 있습니다.
var result = restaurants.filter(function (chain) {
return chain.restaurant.food === "chicken";
})[0].restaurant.name;
의 Array.find
기능을 사용할 수도 있습니다 es6
. 문서가 여기 있습니다
return restaurants.find(item => {
return item.restaurant.food == 'chicken'
})
for (x in restaurants) {
if (restaurants[x].restaurant.food == 'chicken') {
return restaurants[x].restaurant.name;
}
}
지금은 너무 늦어 야하지만 올바른 버전은 다음과 같습니다.
for(var i = 0; i < restaurants.restaurant.length; i++)
{
if(restaurants.restaurant[i].food == 'chicken')
{
return restaurants.restaurant[i].name;
}
}
ES5를 사용할 수 있습니다. 콜백을 사용하여 처음으로
function findRestaurent(foodType) {
var restaurant;
restaurants.some(function (r) {
if (r.food === id) {
restaurant = r;
return true;
}
});
return restaurant;
}
@Chap - you can use this javascript lib, DefiantJS (http://defiantjs.com), with which you can filter matches using XPath on JSON structures. To put it in JS code:
var data = [
{ "restaurant": { "name": "McDonald's", "food": "burger" } },
{ "restaurant": { "name": "KFC", "food": "chicken" } },
{ "restaurant": { "name": "Pizza Hut", "food": "pizza" } }
].
res = JSON.search( data, '//*[food="pizza"]' );
console.log( res[0].name );
// Pizza Hut
DefiantJS extends the global object with the method "search" and returns an array with matches (empty array if no matches were found). You can try out the lib and XPath queries using the XPath Evaluator here:
http://www.defiantjs.com/#xpath_evaluator
ReferenceURL : https://stackoverflow.com/questions/2166765/search-an-array-for-matching-attribute
'IT TIP' 카테고리의 다른 글
C # 클래스 라이브러리의 Server.Mappath (0) | 2021.01.09 |
---|---|
배열 요소가 있는지 확인하는 방법은 무엇입니까? (0) | 2021.01.09 |
django에서 login_required 리디렉션 URL을 지정하는 방법은 무엇입니까? (0) | 2021.01.09 |
PHP가 777 권한으로 디렉토리를 생성 할 수없는 이유는 무엇입니까? (0) | 2021.01.09 |
Express.js 또는 Connect.js에서 여러 하위 도메인을 구성하려면 어떻게해야합니까? (0) | 2021.01.09 |