2026, 새로운 도약을 시작합니다.

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라는것만 뽑고 싶습니다

Copy


a.map(x=>{

b.map(y=>{

if(x.name == y.name){

return b.alpha

}

) })

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

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

결과값 [a,b,c]

답변 2개

채택된 답변
+20 포인트
Copy




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);



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

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

감사합니다 함수로 넣는것도 생각해 봐야겟군요

댓글을 작성하려면 로그인이 필요합니다.

Copy


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에 포함된것들만 리턴 하면 나오긴하는데.... 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

감사합니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고