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

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;
답변을 작성하시기 전에 로그인 해주세요.
전체 123,479 | RSS
QA 내용 검색

회원로그인

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