빈 요소를 제거하시겠습니까 어레이입니다 Javascript 에서

빈 요소를 어떻게 제거합니까 JavaScript 에서 어레이입니다?

직설적으로 있나요 아니면 데릭쉐퍼드와 반복할 정보기술 (it) 과 통해 수동으로 제거해야?

질문에 대한 의견 (1)

간단한 ways:&lt /h2&gt h2&gt <;;;

var arr = [1,2,,3,,-3,null,,0,,undefined,4,,4,,5,,6,,,,];

arr.filter(n => n)
// [1, 2, 3, -3, 4, 4, 5, 6]

arr.filter(Number) 
// [1, 2, 3, -3, 4, 4, 5, 6]

arr.filter(Boolean) 
// [1, 2, 3, -3, 4, 4, 5, 6]
  • 또는 - (, 단일 품목에 대해서만 어레이입니다 문자줄 &quot text") *
['','1','2',3,,'4',,undefined,,,'5'].join('').split(''); 
// output:  ["1","2","3","4","5"]
  • 또는 - 클래식 운행에서어떠한: * 간단한 이터레이션에
var arr = [1,2,null, undefined,3,,3,,,0,,,[],,{},,5,,6,,,,],
    len = arr.length, i;

for(i = 0; i < len; i++ )
    arr[i] && arr.push(arr[i]);  // copy non-empty values to the end of the array

arr.splice(0 , len);  // cut the array and leave only the non-empty values

arr // [1,2,3,3,[],Object{},5,6]

&lt br/>; &lt h2&gt jQuery:&lt 통해 /h2>;;;

var arr = [1,2,,3,,3,,,0,,,4,,4,,5,,6,,,,];

arr = $.grep(arr,function(n){ return n == 0 || n });

arr // [1, 2, 3, 3, 0, 4, 4, 5, 6]

&lt br/>; 그냥 다른 방법을 사용하여 ES6), 빠르고, h2&gt &lt 업데이트하십시오 준활성 :&lt /h2>;

var arr = [1,2,null, undefined,3,,3,,,0,,,4,,4,,5,,6,,,,], 
    temp = [];

for(let i of arr)
    i && temp.push(i); // copy each non-empty value to the 'temp' array

arr = temp;

arr // [1, 2, 3, 3, 4, 4, 5, 6]

빈 값을 제거하시겠습니까

['foo', '',,,'',,null, ' ', 3, true, [], [1], {}, undefined, ()=>{}].filter(String)

// ["foo", null, " ", 3, true, [1], Object {}, undefined, ()=>{}]
해설 (32)
해결책
  • EDIT:* 거의 9 년 전 이 질문에 응답한 때 유용한 방법 '에서' 아리스프로토티페 내장현 많지 않았다.

자 이제 꼭 이래야겠어요 추천합니까 '필터' 방법을 사용할 수 있습니다.

이렇게 하면 돌아가게 a array 시행하십시오 염두에 두고 새로운 기준을 통과한 요소와 함께 콜백 함수를 제공하는 것이다.

예를 들어, 'null' 또는 '지루려면 스케쳐내 정의되지 않은' 값:

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

var array = [0, 1, null, 2, "", 3, undefined, 3,,,,,, 4,, 4,, 5,, 6,,,,];

var filtered = array.filter(function (el) {
  return el != null;
});

console.log(filtered);

끝 - &lt 스니핏 >;!

이 너희는너희가 따라 달라질 수 고려해보십시오 &quot empty"; 예를 들어, 위의 함수를 다루는 문장열 조교하실 wouldn& # 39, t 요소가 제거하시겠습니까 빈 구체화하십시오.

내가 보고 있는 한 자주 사용되는 일반적인 패턴을 요소를 제거하기 위해, ',' 0 ',' &quot &quot falsy 빈 문자열을 포함하는, '난', 'null', '정의되지 않은' 및 '거짓'.

이 방법에서는 '부울을 전달할 수 있습니다' 필터 '' 구성자를 반품해야 함수 또는 동일한 요소 중 거르개 기준를 기능, 예를 들면 다음과 같습니다.

var filtered = array.filter(Boolean);

또는

var filtered = array.filter(function(el) { return el; });

두 방식 모두, 이 때문에 이 방법을 ',' 필터 '는 첫 사례' 구성자를 페이징됩니다 부울을 함수로, 가치, 두 번째 경우 변환 필터 '방법' 의 '등을 위해 내부적으로 반환 값은 콜백하는 암시적으로 부울입니다'.

흩어진 어레이에는 사용하는 경우, 당신은 보내려는 &quot holes&quot 통과 필터 ',', 이 방법을 사용할 수 있습니다 진정한 반환하는 콜백하는, 예를 들면 다음과 같습니다.

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

var sparseArray = [0, , , 1, , , , , 2, , , , 3],
    cleanArray = sparseArray.filter(function () { return true });

console.log(cleanArray); // [ 0, 1, 2, 3 ]

끝 - &lt 스니핏 >;!

  • 오래된 answer:* Don& # 39, t 이렇게!

내가 이 방법을 사용하여 확장 넷윈을 어레이입니다 시제품:

Array.prototype.clean = function(deleteValue) {
  for (var i = 0; i < this.length; i++) {
    if (this[i] == deleteValue) {         
      this.splice(i, 1);
      i--;
    }
  }
  return this;
};

test = new Array("", "One", "Two", "", "Three", "", "Four").clean("");
test2 = [1, 2,, 3,, 3,,,,,, 4,, 4,, 5,, 6,,,,];
test2.clean(undefined);

또는 다른 어레이입니다 기존 요소를 밉니다 됩니다.

// Will remove all falsy values: undefined, null, 0, false, NaN and "" (empty string)
function cleanArray(actual) {
  var newArray = new Array();
  for (var i = 0; i < actual.length; i++) {
    if (actual[i]) {
      newArray.push(actual[i]);
    }
  }
  return newArray;
}

cleanArray([1, 2,, 3,, 3,,,,,, 4,, 4,, 5,, 6,,,,]);
해설 (18)

모두 제거해야 할 경우 빈 값 (,, null &quot &quot 정의되지 않은 및 0):

arr = arr.filter(function(e){return e}); 

빈 값을 지루려면 및 줄 바꿈.

arr = arr.filter(function(e){ return e.replace(/(\r\n|\n|\r)/gm,"")});

예:

arr = ["hello",0,"",null,undefined,1,100," "]  
arr.filter(function(e){return e});

반품하십시오:

["hello", 1, 100, " "]
  • 업데이트 (# 39 을 기반으로 Alnitak& 셀명) *

경우에 따라, 0&quot &quot 보관할 수 있습니다. 그리고 다른 사항은요 제거하시겠습니까 배열의 (null, 정의되지 않은 및 &quot ";), 이것은 하나의 방법입니다.

arr.filter(function(e){ return e === 0 || e });

반품하십시오:

["hello", 0, 1, 100, " "]
해설 (7)

단순히 한 실었다.

[1, false, "", undefined, 2].filter(Boolean); // [1, 2]

사용하거나 [underscorejs.org] [1]:

_.filter([1, false, "", undefined, 2], Boolean); // [1, 2]
// or even:
_.compact([1, false, "", undefined, 2]); // [1, 2]

[1]: http://underscorejs.org/ # 필터링합니다

해설 (7)

39 you& 경우, ve got Javascript 1.6 이상이 사용할 수 있습니다 진정한 '사소한' '라이트필터' 를 복귀하십시오 콜백 함수, 예:

arr = arr.filter(function() { return true; });

이후 '요소' 윈필터 자동으로 생략할지 누각되었습니다 최초의 어레이입니다.

이 위에 링크됨 매든 페이지 오류 검사 버전니다 필터링합니다 JavaScript 에서 사용할 수 있는 '좋은' 도 포함되어 있는 사대부들이 don& # 39, t 지원 공식 버전.

참고로 이 제거되지 않는 'null' 엔트리입니다 disk_b_s10database 엔트리입니다 가치가 있지만, 특별히 요청되었습니다 &quot missing&quot 명시성 정의되지 않은 '를' OP. 엔트리입니다.

해설 (10)

콩지름에 제거하기 위한 구멍,

arr.filter(() => true)
arr.flat(0) // Currently stage 3, check compatibility before using this

그리고 파우시 제거하기 위한 구멍 (null, 정의되지 않은, 0, 0 -;;,, 난 &quot &quot 거짓값 도쿠먼트리올) 값:

arr.filter(x => x)

구멍, nulll 제거하기 위한, 그리고 정의되지 않았습니다.

arr.filter(x => x != null)

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

arr = [, null, (void 0), 0, -0, NaN, false, '', 42];
console.log(arr.filter(() => true)); // [null, (void 0), 0, -0, NaN, false, '', 42]
console.log(arr.filter(x => x)); // [42]
console.log(arr.filter(x => x != null)); // [0, -0, NaN, false, "", 42]

끝 - &lt 스니핏 >;!

해설 (3)

이 방법은 청소하십시오 do it.

var arr = [0,1,2,"Thomas","false",false,true,null,3,4,undefined,5,"end"];
arr = arr.filter(Boolean);
// [1, 2, "Thomas", "false", true, 3, 4, 5, "end"]
해설 (1)

간단한 ES6

['a','b','',,,'w','b'].filter(v => v);
해설 (1)
  • 및 Underscore/Lodash:*

일반 览侩 荤례:

_.without(array, emptyVal, otherEmptyVal);
_.without([1, 2, 1, 0, 3, 1, 4], 0, 1);

함께 나선다.

_.without(['foo', 'bar', '', 'baz', '', '', 'foobar'], '');
--> ["foo", "bar", "baz", "foobar"]

참조 [로다시 문서용으로 없는] (https://lodash.com/docs # 없는).

해설 (2)

그냥 '와' ES6 최신 버전을 방법을 solaris. 배열은 다음과 같습니다.

 const arr = [1,2,3,undefined,4,5,6,undefined,7,8,undefined,undefined,0,9];

간단한 방법:

 const clearArray = arr.filter( i => i );
해설 (0)

라이브러리를 사용할 경우 함수 호출 (http://documentcloud.github.com/underscore/) 는 옵션입니다 그러니까말이야 언더스코엘가이스 컴팩트형 () 는 몇 가지 다른 유용한 기능 또한 관련 시스템 및 컬렉션.

여기 백업이었습니다 발췌문 그들위에 문서:

&gt. .compact (array) &gt. &gt. 모든 값을 a 파우시 되돌려줍니다 복제본이므로 어레이에는 재거됨. Javascript 로, false nulll, 0, "; 난 모두 &quot 정의되지 않은 및 파우시. &gt. &gt. .compact ([0, 1, 2, & # 39, & # 39 거짓값,, 3]). &gt. &gt. = &gt. [1, 2, 3]

해설 (1)

@Alnitak

실제로 모든 브라우저에서 몇 가지 추가 코드를 추가하면 라이트필터 작동합니다. 아래 참조.

var array = ["","one",0,"",null,0,1,2,4,"two"];

function isempty(x){
if(x!=="")
    return true;
}
var res = array.filter(isempty);
document.writeln(res.toJSONString());
// gives: ["one",0,null,0,1,2,4,"two"]  

하지만 이 코드가 필터링합니다 imo 는 IE 의 규모 및 기능적 프로그레밍스 추가해야 합니다.

//This prototype is provided by the Mozilla foundation and
//is distributed under the MIT license.
//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license

if (!Array.prototype.filter)
{
  Array.prototype.filter = function(fun /*, thisp*/)
  {
    var len = this.length;
    if (typeof fun != "function")
      throw new TypeError();

    var res = new Array();
    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in this)
      {
        var val = this[i]; // in case fun mutates this
        if (fun.call(thisp, val, i, this))
          res.push(val);
      }
    }

    return res;
  };
}
해설 (3)

아무도 모르게 언급한 이후 정보기술 (it) 과 자신의 프로젝트를 통해 많은 사람들이 포함된 ',' _.without (어레이이며 * 값) 을 사용할 수도 있습니다.

_.without(["text", "string", null, null, null, "text"], null)
// => ["text", "string", "text"]
해설 (0)
ES6: let newArr = arr.filter(e => e);
해설 (0)

쉽게 찾을 수 있습니다) 구축 및 어레이입니다 루프 대한 새로운 어레이입니다 빼냅니다 유지하려는 &solarisdvd 어레이입니다 하는 등 여러 항목을 통해 그동안 디스테이징하는 이 어레이에는 스플라이스를 루프 및 수정 제안한 이후 중일 때 문제를 놓고 소개하십시오 루프 수 있습니다.

이 같은 일이 할 수 있습니다.

function removeFalsyElementsFromArray(someArray) {
    var newArray = [];
    for(var index = 0; index < someArray.length; index++) {
        if(someArray[index]) {
            newArray.push(someArray[index]);
        }
    }
    return newArray;
}

실제로 이것은 좀 더 일반적인 해결책:

function removeElementsFromArray(someArray, filter) {
    var newArray = [];
    for(var index = 0; index < someArray.length; index++) {
        if(filter(someArray[index]) == false) {
            newArray.push(someArray[index]);
        }
    }
    return newArray;
}

// then provide one or more filter functions that will 
// filter out the elements based on some condition:
function isNullOrUndefined(item) {
    return (item == null || typeof(item) == "undefined");
}

// then call the function like this:
var myArray = [1,2,,3,,3,,,,,,4,,4,,5,,6,,,,];
var results = removeElementsFromArray(myArray, isNullOrUndefined);

// results == [1,2,3,3,4,4,5,6]

그런 생각을 할 수 있습니다 - 확보하십시오 다른 유형의 거르개 총괄하였습니다. 하지만 제가 아마 더 필요한 것 보다 넓은. )

[1]: http://stackoverflow.com/questions/281264/remove-empty-elements-from-an-array-in-javascript # 281288

해설 (0)
  • 어떤 우리 섹스한거요 (ES6): 충족되었으며 array.* 지루려면 파우시 value)
var arr = [0,1,2,"test","false",false,true,null,3,4,undefined,5,"end"];

arr.filter((v) => (!!(v)==true));

//output:

//[1, 2, "test", "false", true, 3, 4, 5, "end"]
해설 (0)

160; 어레이입니다 get& 콩지름에 필터 없이 빈 요소를. 예에서는 ES6

const array = [1, 32, 2, undefined, 3];
const newArray = array.filter(arr => arr);
해설 (0)

내 목소리가 쉽게 추가할 수 m i& # 39 위, " () '와' 라이트필터 ES5& 호출하십시오 # 39 의 노드전역 구성자를" 하지만 난 '대신' 문자열 객체를 사용하여 제안하세요 골프 해킹 '또는' 수 '도', ',' 부울을 제안됩니다 명이다.

특히 ES5& # 39, s ' ()', 't "에 대한 트리거할 doesn& 필터링합니다 이미 # 39 에서 정의되지 않은 요소를 스토리지였습니다. 따라서 오늘날 기능을 제공하는 'true', '모든 요소를 되돌려줍니다 반환하는 필터 () 는' 만 '안타, 반드시 비사양 반품하십시오 정의되지 않은' 요소:

> [1,,5,6,772,5,24,5,'abc',function(){},1,5,,3].filter(function(){return true})
[1, 5, 6, 772, 5, 24, 5, 'abc', function (){}, 1, 5, 3]

하지만. (함수 () {} 진정한, 복귀하십시오) '가' 먹어서나 아웃해야 먹어서나 이상 (객체) ','. 그리고 이 모든 상황에 따라 ',' 객체에는 반환 값 구성자를 일종의 객체에는 , 됩니다. 즉, 위에서 제안됩니다 복싱 구성자를 프리미티브 달리 수 없는 객체 값 파우시 부울입니다 설정, '는' 은 '에 대한 함수 () {} 복귀하십시오 객체에는 속기 진정한'.

> [1,,5,6,772,5,24,5,'abc',function(){},1,5,,3].filter(Object)
[1, 5, 6, 772, 5, 24, 5, 'abc', function (){}, 1, 5, 3]
해설 (3)

개별 문자가 있었는데, 첫 번째 사례 중 가장 높은 찬성 답변을 사용할 때 위의 문자열 길이를 1 보다 큰. 다음은 그 문제를 내 솔루션입니다.

var stringObject = ["", "some string yay", "", "", "Other string yay"];
stringObject = stringObject.filter(function(n){ return n.length > 0});

대신 길이 없는 경우, 우리는 다시 복귀하십시오 정의되지 않은 경우 0 보다 크면. 누가 밖에 수 있기를 기대한다.

    • 되돌려줍니다
["some string yay", "Other string yay"]
해설 (1)
var data = [null, 1,2,3];
var r = data.filter(function(i){ return i != null; })
console.log(r) 

[1.2,3] &gt.

해설 (1)