테스트 사이트 - 개발 중인 베타 버전입니다

js 질문 채택완료

니냐노 3년 전 조회 1,862

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

</p>

<p>a.map(x=>{</p>

<p>b.map(y=>{</p>

<p>if(x.name == y.name){</p>

<p>return b.alpha</p>

<p>}</p>

<p>) })

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

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

 

결과값 [a,b,c]

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

답변 2개

채택된 답변
+20 포인트
3년 전

</p>

<p><script>

const a = [

    {id: 0, name: "철수", status: "good"},

    {id: 1, name: "영희", status: "nice"},

    {id: 2, name: "짱구", status: "good"},

    {id: 0, name: "훈이", status: "bad"}

];</p>

<p>const b = [

    {name:"철수", alpha: "a" },

    {name:"영희", alpha: "b" },

    {name:"짱구", alpha: "c" }

    ,{name:"x구", alpha: "xc" }

    ,{name:"xx구", alpha: "xxc" }

];</p>

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

<p>console.log(c);</p>

<p></script></p>

<p>

 

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

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

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

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

답변에 대한 댓글 1개

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

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

</p>

<p>let itemA = [</p>

<p>        { id: 0, name: "훈이", status: "bad" },</p>

<p>        { id: 0, name: "철수", status: "good" },</p>

<p>        { id: 1, name: "영희", status: "nice" },</p>

<p>        { id: 2, name: "짱구", status: "good" },</p>

<p>    ];</p>

<p>    let itemB = [</p>

<p>        { name: "철수", alpha: "a" },</p>

<p>        { name: "영희", alpha: "b" },</p>

<p>        { name: "짱구", alpha: "c" },</p>

<p>    ];</p>

<p> </p>

<p>    let result = itemB.filter((B) => {</p>

<p>        return itemA.some((A) => A.name === B.name);</p>

<p>    });</p>

<p> </p>

<p>    console.log(result);</p>

<p>

 

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

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

답변에 대한 댓글 1개

니냐노
3년 전
감사합니다

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

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

로그인