IT/JavaScript

index값들로 배열에서 삭제하기

솔B 2022. 3. 18. 10:47

selectedIndex에는 선택된 index들의 값들이 들어있다.

선택된 index들은 arr배열에서 삭제하고 싶었다.

const arr= [
  {id:1, name:'AAA'}, // 0
  {id:2, name:'BBB'}, // 1
  {id:3, name:'CCC'}, // 2
  {id:4, name:'DDD'}, // 3
  {id:5, name:'EEE'}, // 4
]

const selectedIndex= [0,2,3]

 

1. Object의 key들의 값을 비교해주고 key값이 다른 아이들만 담아줬다.

2. reduce로 담아진 key들에 값을 넣어줬다.

3. 2번 과정을 거치면 중간에 삭제된 곳에는 빈 값이 들어가므로 null이 아닌 값들만 리턴해준다.

const filteredData = Object.keys(arr)
          .filter((key) => !selectedItem.includes(Number(key)))
          .reduce((obj, key) => {
            obj[key] = arr[key];
            return obj;
          }, [])
          .filter((el) => {
          return el !== null;
        });

console.log(filteredData)

// [{id: 2, name: "BBB"}, {id: 5, name: "EEE"}]