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에 포함된것들만 리턴 하면 나오긴하는데....
!-->
답변을 작성하시기 전에 로그인 해주세요.