[javascript] 자바 스크립트 배열 검색 및 제거 문자열?

나는 가지고있다:

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제거하는 데 사용할 수 있습니다.

또는 새 배열을 만들고 현재 배열을 반복하고 현재 개체가 제거하려는 항목과 일치하지 않으면 새 배열에 넣을 수 있습니다.