나는 가지고있다:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
나는 다음과 같은 것을 할 수 있기를 원한다.
array.remove("B");
그러나 제거 기능은 없습니다. 어떻게하면 되나요?
답변
실제로이 스레드를 최신 1 줄 솔루션으로 업데이트하고 있습니다.
let arr = ['A', 'B', 'C'];
arr = arr.filter(e => e !== 'B'); // will return ['A', 'C']
아이디어는 기본적으로 제거하려는 요소와 다른 모든 요소를 선택하여 배열을 필터링하는 것입니다.
참고 : 모든 발생을 제거합니다.
편집하다:
첫 번째 발생 만 제거하려는 경우 :
t = ['A', 'B', 'C', 'B'];
t.splice(t.indexOf('B'), 1); // will return ['B'] and t is now equal to ['A', 'C', 'B']
답변
목록을 역순으로 반복하고 .splice
메소드를 사용하십시오 .
var array = ['A', 'B', 'C']; // Test
var search_term = 'B';
for (var i=array.length-1; i>=0; i--) {
if (array[i] === search_term) {
array.splice(i, 1);
// break; //<-- Uncomment if only the first term has to be removed
}
}
모든 검색어를 제거해야 할 경우 역순이 중요 합니다. 그렇지 않으면 카운터가 증가하고 요소를 건너 뜁니다.
첫 번째 항목 만 제거해야하는 경우 다음도 작동합니다.
var index = array.indexOf(search_term); // <-- Not supported in <IE9
if (index !== -1) {
array.splice(index, 1);
}
답변
하나의 라이너 목록
이 배열에서이 문제를 해결해 봅시다 :
var array = ['A', 'B', 'C'];
1. 첫 번째
항목 만 제거 : 사용 항목이 존재하는 경우
array.splice(array.indexOf('B'), 1);
2. 마지막
항목 만 제거 : 사용 항목이 있는지 확인한 경우
array.splice(array.lastIndexOf('B'), 1);
3. 모든 발생을 제거하십시오.
array = array.filter(v => v !== 'B');
답변
데모
원하는 위치를 찾아서 .indexOf()
제거해야합니다..splice()
function remove(arr, what) {
var found = arr.indexOf(what);
while (found !== -1) {
arr.splice(found, 1);
found = arr.indexOf(what);
}
}
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
remove(array, 'B');
alert(array);
모든 발생을 처리합니다.
답변
간단히
array.splice(array.indexOf(item), 1);
답변
간단한 솔루션 (ES6)
중복 요소가없는 경우
Array.prototype.remove = function(elem) {
var indexElement = this.findIndex(el => el === elem);
if (indexElement != -1)
this.splice(indexElement, 1);
return this;
};
답변
당신은 당신이 자신의 제거를 작성해야합니다. 배열을 반복하고 제거하려는 항목의 색인을 잡고 splice
제거하는 데 사용할 수 있습니다.
또는 새 배열을 만들고 현재 배열을 반복하고 현재 개체가 제거하려는 항목과 일치하지 않으면 새 배열에 넣을 수 있습니다.