Object 배열 삭제 관련 질문 입니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
Object 배열 삭제 관련 질문 입니다.

QA

Object 배열 삭제 관련 질문 입니다.

본문

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

[

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

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

]

 

이 상태에서 

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

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

 

즉, 질문은 

[

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

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

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

]

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

 

이 질문에 댓글 쓰기 :

답변 4

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

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

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

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

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


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

<script>
my = [
{name : "나라" , score : 30},
{name : "태희" , score : 30}
];
my.shift();
my.push({name : "나라" , score : 40});
</script>

 

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

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

 

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

 

----------

 

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

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

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

 


for (i in my) if (my[i].name === "나라") my[i].score = 40;
또는
for (i in my) if (my[i]["name"] === "나라") my[i]["score"] = 40;
답변을 작성하시기 전에 로그인 해주세요.
전체 2,639
QA 내용 검색

회원로그인

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