developer tip

루프없이 레코드를 유지하면서 배열에서 빈 문자열을 제거 하시겠습니까?

copycodes 2020. 9. 17. 08:02
반응형

루프없이 레코드를 유지하면서 배열에서 빈 문자열을 제거 하시겠습니까?


이 질문은 여기에 질문되었습니다 : 비어 있지 않은 문자열로 인덱스 기록을 유지하면서 배열에서 빈 문자열 제거

@Baz가 배치 한 것처럼 주어진 것을 알 수 있다면;

"I", "am", "", "still", "here", "", "man"

"그리고 이로부터 다음 두 개의 배열을 만들고 싶습니다."

"I", "am", "still", "here", "man"

이 질문에 대한 모든 답변 은 반복 형식을 참조했습니다.

내 질문 : 루핑없이 모든 es 제거 할 수 있습니까? ... 배열을 반복하는 것 외에 다른 대안이 있습니까?indexempty string

우리가 알지 못하는 일부 regex또는 jQuery일부일 수 있습니까?

모든 답변이나 제안을 높이 평가합니다.


var arr = ["I", "am", "", "still", "here", "", "man"]
// arr = ["I", "am", "", "still", "here", "", "man"]
arr = arr.filter(Boolean)
// arr = ["I", "am", "still", "here", "man"]

filter 선적 서류 비치


// arr = ["I", "am", "", "still", "here", "", "man"]
arr = arr.filter(v=>v!='');
// arr = ["I", "am", "still", "here", "man"]

화살표 함수 문서


var newArray = oldArray.filter(function(v){return v!==''});

참고 : 문서에 다음과 같은 내용 이 있습니다.

filterECMA-262 표준에 대한 JavaScript 확장입니다. 같은 이것은 표준의 다른 실시 예에 존재하지 않을 수있다 . 스크립트 시작 부분에 다음 코드를 삽입하여이 문제를 해결할 수 있으며 기본적으로 지원하지 않는 ECMA-262 구현에서 필터를 사용할 수 있습니다. 이 알고리즘은 fn.call이 Function.prototype.call의 원래 값으로 평가되고 Array.prototype.push에 원래 값이 있다고 가정하면 ECMA-262, 5th edition에 지정된 것과 정확히 일치합니다.

그래서, 일부 상심을 피하기 위해, 당신은 당신의 스크립트 코드를 추가 할 수 있습니다 처음에는 .

if (!Array.prototype.filter) {
  Array.prototype.filter = function (fn, context) {
    var i,
        value,
        result = [],
        length;
        if (!this || typeof fn !== 'function' || (fn instanceof RegExp)) {
          throw new TypeError();
        }
        length = this.length;
        for (i = 0; i < length; i++) {
          if (this.hasOwnProperty(i)) {
            value = this[i];
            if (fn.call(context, value, i, this)) {
              result.push(value);
            }
          }
        }
    return result;
  };
}

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

반환 된대로 v암시는 진실로 변환


If are using jQuery, grep may be useful:


var arr = [ a, b, c, , e, f, , g, h ];

arr = jQuery.grep(arr, function(n){ return (n); });

arr is now [ a, b, c, d, e, f, g];


i.e we need to take multiple email addresses separated by comma, spaces or newline as below.

    var emails = EmailText.replace(","," ").replace("\n"," ").replace(" ","").split(" ");
    for(var i in emails)
        emails[i] = emails[i].replace(/(\r\n|\n|\r)/gm,"");

    emails.filter(Boolean);
    console.log(emails);

참고URL : https://stackoverflow.com/questions/19888689/remove-empty-strings-from-array-while-keeping-record-without-loop

반응형