반응형

Vanilla Javascript:

function DoPropertiesExist(parent, propertyNames, operator, isArray){
  let checkAND = true
  let checkOR = false

  propertyNames.forEach(prop => {
    //If Property exists
    console.log(prop)
    if (Object.prototype.hasOwnProperty.call(parent, prop) && parent[prop] != null) {
      if (isArray) {
        if (parent[prop].length == 0) checkAND = false
        else checkOR = true
      } else checkOR = true
    } else {
      checkAND = false
    }
  })

  if (operator == "AND") return checkAND
  else if (operator == "OR") return checkOR
}

parent에 검사하고 싶은 object,

propertyNames에는 확인하고 싶은 propertyNames들을 배열로 (ex: ["prop1","prop2","prop3"])

operator에는 "AND" 나 "OR"을

isArray에는 해당 property가 array인지 아닌지를 true / false로 넣어주면 빈 배열이 들어왔을 경우 걸러줍니다.

 

typescript 버전:

function DoPropertiesExist(parent: any, propertyNames: string[], operator: "AND" | "OR", isArray: boolean = false): boolean {
  let checkAND = true
  let checkOR = false

  propertyNames.forEach(property => {
    //If Property exists
    if (Object.prototype.hasOwnProperty.call(parent, property) && parent[property] != null) {
      if (isArray) {
        if (parent[property].length == 0) checkAND = false
        else checkOR = true
      } else {
        checkOR = true
      }
    } else {
      checkAND = false
    }
  })

  if (operator == "AND") return checkAND
  else if (operator == "OR") return checkOR
}
반응형
블로그 이미지

개발자_무형

,