이 질문은 여기에 질문되었습니다 :
비어 있지 않은 문자열로 인덱스 기록을 유지하면서 배열에서 빈 문자열 제거
@Baz가 배치 한 것처럼 주어진 것을 알 수 있다면;
"I", "am", "", "still", "here", "", "man"
“그리고 이로부터 다음 두 개의 배열을 만들고 싶습니다.”
"I", "am", "still", "here", "man"
이 질문에 대한 모든 답변 은 반복 형식을 참조했습니다.
내 질문 : 루핑없이 모든 es 를 제거 할 수 있습니까? … 배열을 반복하는 것 외에 다른 대안이 있습니까?index
empty
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"]
// 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!==''});
답변
참고 :
문서 내용 :
filter
ECMA-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
암시는 진실로 변환
답변
jQuery를 사용하는 경우 grep 이 유용 할 수 있습니다.
var arr = [ a, b, c, , e, f, , g, h ];
arr = jQuery.grep(arr, function(n){ return (n); });
arr
지금 [ a, b, c, d, e, f, g];
답변
즉, 아래와 같이 쉼표, 공백 또는 줄 바꿈으로 구분 된 여러 이메일 주소를 가져와야합니다.
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);
답변
lodash의 방법을 사용할 수 있으며 문자열, 숫자 및 부울 유형에 대해 작동합니다.
_.compact([0, 1, false, 2, '', 3]);
// => [1, 2, 3]