>source

라 라벨의 only 유형을 만들고 싶습니다  JS의 메소드.

다음 JSON이 있습니다 :

let obj = {
             name: "Wil",
             age: "20",
             id: "1"
          }

그리고필터배열 :

let filters = ['name', 'age'];

이 경우에는 2 개의 매개 변수를받는 함수를 원합니다 :

const filterJSON = (object, filters) => {
}

그리고 함수가 필터 배열에 전달하는 키 이름만으로 동일한 객체를 반환하기를 원합니다.

이 경우 :

{
   name: "Wil",
   age: "20"
}

.map 와 함께 노력하는 동안 시간이 있습니다  그리고 .filter  하지만 원하는 것을 얻지 못했습니다. 찾은 예제는 객체 배열에만 있지만이 경우 단일 객체를 필터링해야합니다.

감사합니다.

  • 답변 # 1

    간단한 reduce() 를 사용할 수 있습니다  새 객체를 반환하려면

    let obj = { name: "Wil",age: "20",id: "1"}
    let filters = ['name', 'age'];
    const filterJSON = (obj, fil) => fil.reduce((a,c) => (a[c] = obj[c], a),{})
    
    console.log(filterJSON(obj, filters))
    
    

  • 답변 # 2

    Object.keys 사용  그리고 reduce

    const obj = {
      name: "Wil",
      age: "20",
      id: "1"
    }
    let filters = ['name', 'age'];
    const filterJSON = (object, filters) => Object.keys(object).reduce((a, v) => {
      if (filters.some(f => f === v)) {
        a[v] = object[v];
      }
      return a;
    }, {});
    console.log(filterJSON(obj, filters));
    
    

  • 답변 # 3

    새 객체를 만든 다음 배열을 반복하고 객체의 대괄호 표기법을 사용하여 키와 값을 추가합니다

    let obj = {
      name: "Wil",
      age: "20",
      id: "1"
    }
    let filters = ['name', 'age'];
    function getObj(arr, obj) {
      let newObj = {};
      filters.forEach(function(elem) {
        newObj[elem] = obj[elem]
      })
      return newObj;
    };
    console.log(getObj(filters, obj))
    
    

  • 이전 python - pip19 및 python37 패키지에서 선택적 및 선택적 종속성을 지정하는 방법
  • 다음 python 3.x - 사전 목록에서 날짜 변경