js 질문

js 질문

QA

js 질문

본문

a = [{id: 0, name: "철수", status: good},{id: 1, name: "영희", status:nice},{id: 2, name: "짱구", status: good},{id: 0, name: "훈이 status: bad}]

 

b = [{name:"철수", alpha: ''a" },{name:"영희", alpha: ''b" },{name:"짱구", alpha: ''c" }]

가 잇다고 하면

 

제가 가지고 싶은건  이름이 같은것중에 b에서 alpha라는것만 뽑고 싶습니다


a.map(x=>{
b.map(y=>{
if(x.name == y.name){
return b.alpha
}
) })

가 제생각인데 안되더ㅏ구요;;

filter로든 include등 해봣는데 도무지 안되서 질문 드립니다 ㅠ

 

결과값 [a,b,c]

이 질문에 댓글 쓰기 :

답변 2


<script>
const a = [
    {id: 0, name: "철수", status: "good"},
    {id: 1, name: "영희", status: "nice"},
    {id: 2, name: "짱구", status: "good"},
    {id: 0, name: "훈이", status: "bad"}
];
const b = [
    {name:"철수", alpha: "a" },
    {name:"영희", alpha: "b" },
    {name:"짱구", alpha: "c" }
    ,{name:"x구", alpha: "xc" }
    ,{name:"xx구", alpha: "xxc" }
];
const c = b.map((row_b) => {
    const matched = a.some(row_a => row_a.name == row_b.name);
    if (matched == true) {
        return row_b.alpha;
    }
    return null;
}).filter(v => v != null);
console.log(c);
</script>

 

글쎄요. 결과가 나오긴 하는데

라인이 짧고 함축적이라고 다 좋은건 아니어서

이런 축약식 코드는 별로 추천드리지는 않습니다.


let itemA = [
        { id: 0, name: "훈이", status: "bad" },
        { id: 0, name: "철수", status: "good" },
        { id: 1, name: "영희", status: "nice" },
        { id: 2, name: "짱구", status: "good" },
    ];
    let itemB = [
        { name: "철수", alpha: "a" },
        { name: "영희", alpha: "b" },
        { name: "짱구", alpha: "c" },
    ];
 
    let result = itemB.filter((B) => {
        return itemA.some((A) => A.name === B.name);
    });
 
    console.log(result);

 

// B 기준으로 돌려서  A에 포함된것들만 리턴 하면 나오긴하는데.... 

답변을 작성하시기 전에 로그인 해주세요.
전체 2,661
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT