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

Object 배열 삭제 관련 질문 입니다. 채택완료

현재 배열에 학생의 성적을 넣고 있습니다.

[

{name : "나라" , score : 30},

{name : "태희" , score : 30},

]

이 상태에서 

{name : "나라" , score : 40} 을 위에 배열에 넣어주고 

{name : "나라" , score : 30} 를 배열에서 제거 해주고 싶은데 방법이 있을까요?

즉, 질문은 

[

{name : "나라" , score : 30},

{name : "태희" , score : 30},

{name : "나라" , score : 40}

]

현 배열에서 중복값인 나라 학생의 첫번째 데이터를 지울 수 있는지 궁금합니다. 배열의 순서는 바뀔 수 있기 때문에 위치로 지우는 방법 말고 조언부탁드립니다. 

답변 4개

채택된 답변
+20 포인트

지우는게 아니고 수정을 하는게 맞습니다.

반복문으로 name 나라를 찾고, 나라가 없을때 object 배열을 추가 해 주는것이 바람직합니다.

어차피 name 에 해상하는 배열을 검색해야 하기 때문에, 반복문을 반드시 사용해서,

name 에 해당하는 값을 검색후 있으면 수정, 없으면 추가가 바람직합니다.

중복되는 데이타는 존재할 수 없습니다.

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

답변에 대한 댓글 1개

답변 감사합니다!!

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

답변에 대한 댓글 1개

답변 감사합니다!!

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

Copy




my = [

{name : "나라" , score : 30},

{name : "태희" , score : 30}

];

my.shift();

my.push({name : "나라" , score : 40});



자바스크립트 배열에서 첫 요소의 삭제는 shift() 이고

배열에 다른 요소를 더할 때는 push() 를 사용합니다. 그래서 my 의 최종값은 아래처럼 됩니다.

my = [
{name : "태희" , score : 30},
{name : "나라" , score : 40}
];

----------

제가 질문을 약간 잘못 독해했네요.

배열 순서와 상관없고 name 의 중복이 없는 배열이라면

배열을 포인문으로 돌리면서 if 로 나라의 score 만 40 으로 바꾸세요.

Copy


for (i in my) if (my[i].name === "나라") my[i].score = 40;

또는

for (i in my) if (my[i]["name"] === "나라") my[i]["score"] = 40;

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

답변에 대한 댓글 1개

답변 감사합니다!! 도전해보겠습니다!!

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

Copy




var arr = [

    {name : "나라" , score : 30},

    {name : "나라" , score : 70},

    {name : "빙구" , score : 20},

    {name : "나라" , score : 60},

    {name : "태희" , score : 30},

    {name : "나라" , score : 40},

    {name : "태희" , score : 50}

];

function unique_name_max_score(arr) {

    var last_i = null;

    for (let i = arr.length - 1; i >= 0; i--) {

        last_i = arr.findLastIndex((el) => el.name == arr[i].name);

        if (last_i > i) {

            arr[i].score = Math.max(arr[i].score, arr[last_i].score);

            arr.splice(last_i, 1);

        }

    }

}

console.log(JSON.stringify(arr));

unique_name_max_score(arr);

console.log(JSON.stringify(arr));



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

답변에 대한 댓글 1개

답변 감사합니다!!!! 도전해보겠습니다!!

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

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

로그인
🐛 버그신고