programing

각도에서의 객체 속성으로 필터링하는 방법JS

golfzon 2023. 3. 25. 12:03
반응형

각도에서의 객체 속성으로 필터링하는 방법JS

Angular에서 사용자 지정 필터를 생성하려고 합니다.특정 속성 값을 기준으로 개체 목록을 필터링하는 JS.이 경우 "극성" 속성("긍정", "중립", "부정"의 가능한 값)으로 필터링합니다.

필터가 없는 작업 코드는 다음과 같습니다.

HTML:

<div class="total">
    <h2 id="totalTitle"></h2>
    <div>{{tweets.length}}</div>
    <div id="totalPos">{{tweets.length|posFilter}}</div>
    <div id="totalNeut">{{tweets.length|neutFilter}}</div>
    <div id="totalNeg">{{tweets.length|negFilter}}</div>
</div>

JSON 형식의 "$scope.tweets" 어레이는 다음과 같습니다.

{{created_at: "Date", text: "tweet text", user:{name: "user name", screen_name: "user       screen name", profile_image_url: "profile pic"}, retweet_count: "retweet count", polarity: "Positive"},
 {created_at: "Date", text: "tweet text", user:{name: "user name", screen_name: "user screen name", profile_image_url: "profile pic"}, retweet_count: "retweet count", polarity: "Positive"},
 {created_at: "Date", text: "tweet text", user:{name: "user name", screen_name: "user screen name", profile_image_url: "profile pic"}, retweet_count: "retweet count", polarity: "Positive"}}

내가 생각해 낼 수 있는 최고의 필터는 다음과 같다.

myAppModule.filter('posFilter', function(){
return function(tweets){
    var polarity;
    var posFilterArray = [];
    angular.forEach(tweets, function(tweet){
        polarity = tweet.polarity;
        console.log(polarity);
        if(polarity==='Positive'){
              posFilterArray.push(tweet);
        }
        //console.log(polarity);
    });
    return posFilterArray;
};
});

이 메서드는 빈 배열을 반환합니다.console.log(polarity) 스테이트먼트에서는 아무것도 출력되지 않습니다."polarity"의 객체 속성에 액세스하기 위해 올바른 매개 변수를 삽입하지 않은 것 같습니다.

좋은 생각 있어요?답변해 주셔서 대단히 감사합니다.

이 명령어를 사용하면filter필터(매뉴얼 참조):

<div id="totalPos">{{(tweets | filter:{polarity:'Positive'}).length}}</div>
<div id="totalNeut">{{(tweets | filter:{polarity:'Neutral'}).length}}</div>
<div id="totalNeg">{{(tweets | filter:{polarity:'Negative'}).length}}</div>

Fiddle

문서에는 완전한 해답이 기재되어 있습니다.어쨌든, 이 방법은 다음과 같습니다.

<input type="text" ng-model="filterValue">
<li ng-repeat="i in data | filter:{age:filterValue}:true"> {{i | json }}</li>

필터링만 합니다.agedata배열 및true정확히 일치합니다.

딥 필터링의 경우,

<li ng-repeat="i in data | filter:{$:filterValue}:true"> {{i}}</li>

$Deep Filter 및 Deep Filter의 특수 속성입니다.true위와 같이 정확하게 일치합니다.

또한 이를 통해 보다 역동적으로 만들 수도 있습니다.

<input name="filterByPolarity" data-ng-model="text.polarity"/>

그럼 넌 이렇게 되겠구나

<div class="tweet" data-ng-repeat="tweet in tweets | filter:text"></div>

이 필터는 물론 극성으로 필터링하는 데만 사용됩니다.

다음과 같은 컬렉션이 있습니다.


여기에 이미지 설명 입력

구문:

{{(Collection/array/list | filter:{Value : (object value)})[0].KeyName}}

예:

{{(Collectionstatus | filter:{Value:dt.Status})[0].KeyName}}

-아니면...

구문:

ng-bind="(input | filter)"

예:

ng-bind="(Collectionstatus | filter:{Value:dt.Status})[0].KeyName"

이거 드셔보세요.'이름'은 arr의 속성입니다.

repeat="item in (tagWordOptions | filter:{ name: $select.search } ) track by $index

언급URL : https://stackoverflow.com/questions/17793751/how-to-filter-by-object-property-in-angularjs

반응형