나는 가지고있다:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
나는 다음과 같은 것을 할 수 있기를 원한다.
array.remove("B");
그러나 제거 기능은 없습니다. 어떻게하면 되나요?
나는 가지고있다:
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);
}
0
예를 들어 C와 같이 카운트 다운하는 것이 자동으로 더 빠르지는 않습니다. 물론 한도를 캐시하는 한 첫 경기 후에 계속하면 문제가 복잡해집니다 (중단하지 않으면).
원하는 위치를 찾아서 .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);
모든 발생을 처리합니다.
Uncaught ReferenceError: array is not defined
합니다. 뭐가 잘못 되었 니?
.indexOf()
조금만 더 쉽게 이용할 수 있습니다 . while-loop 내found
에서 .indexOf()
호출에 대한 두 번째 인수로 전달하면 이미 확인되어 동일하지 않은 배열의 요소는 다시 확인되지 않습니다. found = arr.indexOf(what, found);
간단히
array.splice(array.indexOf(item), 1);
-1
, 아무것도 발견되지 않으면 indexOf가 반환 됩니다. 그러면 스플 라이스는 배열의 끝에서 1 개의 요소를 삭제합니다
간단한 솔루션 (ES6)
중복 요소가없는 경우
Array.prototype.remove = function(elem) {
var indexElement = this.findIndex(el => el === elem);
if (indexElement != -1)
this.splice(indexElement, 1);
return this;
};
당신은 당신이 자신의 제거를 작성해야합니다. 배열을 반복하고 제거하려는 항목의 색인을 잡고 splice
제거하는 데 사용할 수 있습니다.
또는 새 배열을 만들고 현재 배열을 반복하고 현재 개체가 제거하려는 항목과 일치하지 않으면 새 배열에 넣을 수 있습니다.
사용하다:
array.splice(2, 1);
이렇게하면 인덱스 2 (3 번째 항목)부터 배열에서 하나의 항목이 제거됩니다.
array.splice(2,1)
인덱스 2에서 1 항목을 배열에서 제거하는 것과 같습니다 . 자세한 내용은 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice 를 확인 하십시오
array.splice를 사용하십시오.
/*array.splice(index , howMany[, element1[, ...[, elementN]]])
array.splice(index) // SpiderMonkey/Firefox extension*/
array.splice(1,1)
출처 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
array
와 splice
마침표 수 있습니다.
.indexOf()
및.splice()
트릭을 할해야합니다. 또는 대안 적으로.filter()
.