>source

나는 배열이 myarrays 및 개체 obj , 배열의 요소와 객체의 키를 비교하여 객체를 필터링해야합니다.

이 코드는 StackBlitz에서도 볼 수 있습니다.https://stackblitz.com/edit/angular-uerzhk.

import { Component, OnInit } from "@angular/core";
@Component({
  selector: "my-app",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent {
  name = "Angular";
  ngOnInit() {
    const myarrays = ["createddate", "enddate"];
    const obj = {
      createddate: "30-01-02",
      progressdate: "30-01-03",
      enddate: "30-01-04"
    };
  }
}

필터링 결과 obj 다음과 같아야합니다.

const filterarrayresult = {
  createddate: "30-01-02",
  enddate: "30-01-04"
};


  • 답변 # 1

    원하는 출력에 대한 코드를 아래에서 찾으십시오.

    const myarrays = ["createddate", "enddate"];
    const obj = {
      createddate: "30-01-02",
      progressdate: "30-01-03",
      enddate: "30-01-04"
    };
    const filteredObj = myarrays.reduce((agg, key) =>
    obj[key] ? {
      ...agg,
      [key]: obj[key]
    } : agg, {})
    console.log(filteredObj)
    
    

  • 답변 # 2

    array.reduce는 여기에서 친구입니다.

    filterarrayresult = myarrays.reduce((agg, key) => {
      if (obj[key]) {
        agg[key] = obj[key] 
      }
      return agg
    }, {})
    
    

  • 답변 # 3

    const myarrays = ["createddate", "enddate"];
    const obj = {
      createddate: "30-01-02",
      progressdate: "30-01-03",
      enddate: "30-01-04"
    };
    let filtered = Object.assign({},
      ...myarrays.map(prev => {
        return {
          [prev]: obj[prev]
        };
      })
    );
    console.log(filtered);
    
    

    이것은 우아한 해결책은 아니지만 간단하고 작동합니다. 다음을 사용하여 동일한 결과를 얻을 수도 있습니다. reduce() (다른 답변에서 snipped 공유를 확인하십시오).

관련 자료

  • 이전 swift - SwiftUI VStack이 제대로 정렬되지 않는 이유는 무엇입니까?
  • 다음 javascript - 모든 데이터가 consolelog ()에 표시되지만 모든 데이터가 브라우저에 표시되지 않는 이유는 무엇입니까?