JavaScript의 Array 원소삭제 메소드가 따로없다보니 간편하게 쓸 수 있을 만한
함수를 만들보았습니다. 쉽게 찾을 수 있는 예제들을 간소화하는 데 중점을 두었습니다.
일반적으로 index를 찾고, splice함수를 통해 지우는 것과 같습니다.
마지막 단락에 String, Array 타입을 종합한 prototype 함수가 있으니,
원리를 알고계신 분은 맨 아래 단락만 참고하세요.
1. Stirng 타입 원소 예제
let fn_remove = function(arr, item) { const idx = arr.indexOf(item) ; if (idx > -1) arr.splice(idx, 1); console.log(temp); } var temp = ['apple', 'banana', 'melon']; fn_remove(temp, 'apple');
[실행결과] |
* fn_remove 인자설명
- arr : 삭제 대상 배열
- item : 삭제 대상 원소값
2. Array 타입 원소 예제
let fn_removeObj = function(arr, key, value) { const idx = arr.findIndex( item => { return item[key] === value }); if (idx > -1) arr.splice(idx, 1); console.log(arr); } { data.push({ FRUIT: "apple", PRICE: "1200", ORIGIN: "china", }); data.push({ FRUIT: "banana", PRICE: "2000", ORIGIN: "america", }); data.push({ FRUIT: "melon", PRICE: "1200", ORIGIN: "korea", }); data.push({ FRUIT: "tomato", PRICE: "4000", ORIGIN: "korea", }); fn_removeObj(data, 'FRUIT', 'tomato'); }
[실행결과] |
* fn_removeObj 인자설명
- arr : 삭제 대상 배열
- key : 삭제 대상 Object 원소의 Key값
- value : 삭제 대상 Object 원소의 Value값
3. Array 클래스에 Remove 프로토타입 함수 정의
Object, String 타입 모두 호환되는 Prototype 함수를 정의합니다.
Array.prototype.remove = function(value, objKey) { const ARR_STRING = 1; const ARR_OBJECT = 2; let idx = null; switch(arguments.length) { case ARR_STRING : idx = this.indexOf(value); break; case ARR_OBJECT : idx = this.findIndex( item => { return item[objKey] === value }); break; } if (idx > -1) this.splice(idx, 1); console.log(this); } { let str_array = ['apple', 'banana', 'melon']; let obj_array = new Array(); obj_array.push({ FRUIT: "apple", PRICE: "1200", ORIGIN: "china", }); obj_array.push({ FRUIT: "banana", PRICE: "2000", ORIGIN: "america", }); obj_array.push({ FRUIT: "melon", PRICE: "1200", ORIGIN: "korea", }); obj_array.push({ FRUIT: "tomato", PRICE: "4000", ORIGIN: "korea", }); str_array.remove('apple'); obj_array.remove("banana", "FRUIT"); }
[실행결과] |
* Array.protytype.remove 인자설명
- value : 배열 내에서 삭제 시 비교할 값
- objKey : 삭제원소가 Object인 경우 비교대상 Key값
arguments 값의 길이를 통해 삭제대상 Array의 원소 타입이 String인지 Object인지 판단합니다. 따라서 예제와 같이 인자의 개수에 따라 아래와 같은 동작을 수행합니다.
Array.remove('1') // String 원소 제거
Array.remove('A', '1') // Object 원소 제거
0 댓글