TWIL 2020-12 (5)

jh22j9·2021년 4월 17일
0

1. console.log inside map


const lineItemIDs = action.items;.
const newObj = lineItemIDs.map(item => ({
  item,
  select: true
}));

// console logging
const lineItemIDs = action.items;
const newObj = lineItemIDs.map(item => {
  console.log("item", item);
  return {
    item,
    select: true
  };
});

2. some()


신규 컴포넌트 작성 중 기존에 사용하던 API 응답 구조가 변경된 것을 발견했다. 필요한 프로퍼티를 supplierName으로 가정한다.

// 기존 구조 예시 
obj : {
  id: ...,
  supplierName: ...,
  items: [...]
}
          
// 변경된 구조 예시
obj: {
  id: ...,
  supplier: {
    supplierID: ...,
    supplierName: ...
  },
  items: [...]
}

추후에 또 응답 구조가 바뀌었을 때도 적용할 수 있도록 전체 컴포넌트가 공유하는 api library에서 nested prop을 찾는 재귀 함수를 작성해야 했다. some() 사용법을 익혔다.

// error
function getNestedProp(propName, obj) {
  let value = obj[propName];
  if (value) {
    return value;
  } else {
    if (isObject(obj)) {
      Object.keys(obj).some(key => {
        if (isArray(obj[key])) {
          return obj[key].some(sub => {
            value = getNestedProp(propName, sub);
            if (value) {
              return value;
            }
          });
        } else if (isObject(obj[key])) {
          obj[propName].some(sub => {
            value = getNestedProp(propName, sub);
            if (value) {
              return value;
            }
          });
        }
        return false;
      });
    } else if (isArray(obj)) {
      return obj[propName].some(sub => {
        value = getNestedProp(propName, sub);
        if (value) {
          return value;
        }
      });
    }
    return value;
  }
}

Expected to return a value at the end of arrow function.
eslint(array-callback-return)

처음에 나타난 에러. some 메서드 내부에서 value를 리턴해야 한다. 불필요한 if statement를 제거하여 해결

function getNestedProp(propName, obj) {
  let value = obj[propName];
  if (value) {
    return value;
  } else {
    if (isObject(obj)) {
      Object.keys(obj).some(key => {
        if (isArray(obj[key])) {
          return obj[key].some(sub => {
            value = getNestedProp(propName, sub);
            return value;
          });
        } else if (isObject(obj[key])) {
          value = getNestedProp(propName, obj[key]);
          return value;
        }
        return false;
      });
    } else if (isArray(obj)) {
      return obj[propName].some(sub => {
        value = getNestedProp(propName, sub);
        return value;
      });
    }
    return value;
  }
}

0개의 댓글

관련 채용 정보