배열에서 모든 거짓 값 제거
배열에서 모든 거짓 값을 제거하고 싶습니다. JavaScript의 거짓 값은 false, null, 0, "", 정의되지 않음 및 NaN입니다.
function bouncer(arr) {
arr = arr.filter(function (n) {
return (n !== undefined && n !== null && n !== false && n !== 0 && n !== "" && isNaN()!=NaN); });
return arr;
}
bouncer([7, "ate", "", false, 9, NaN], "");
위는 NaN 테스트 케이스를 제외하고 모두 만족하고 있습니다. 누군가가 어레이에 NaN이 포함되어 있는지 확인하는 데 도움을 줄 수 있습니까?
부울을 사용할 수 있습니다.
var myFilterArray = myArray.filter(Boolean);
"거짓"값을 없애고 싶기 때문에 JavaScript가 그 일을하도록하십시오.
function bouncer(arr) {
return arr.filter(function(v) { return !!v; });
}
!
연산자를 이중으로 적용 true
하면 값이 "truthy"이고 "false"일 때 필터 콜백이 반환 됩니다 false
.
(귀하의 코드는 호출 isNaN()
하지만 값을 전달하지 않습니다. 이것이 그 테스트가 작동하지 않는 이유입니다. isNaN()
함수는 true
숫자로 강제 변환 될 때 매개 변수가 NaN
이고 false
그렇지 않으면 반환합니다.)
편집 — 참고
function bouncer(arr) {
return arr.filter(Boolean);
}
내장 된 부울 생성자가 .NET과 거의 똑같은 일을하기 때문에 LoremIpsum이 다른 답변에서 메모하는 것처럼 작동 !!
합니다.
truthyArray = arr.filter(el => el)
^ 그것이 당신이하는 방법입니다
당신이 사용하는 isNaN()
잘못된 방법으로. 다음과 같아야합니다.
function bouncer(arr) {
return arr.filter(function (n) {
return n !== undefined && n !== null && n !== false && n !== 0 && n !== "" && !isNaN(n);
});
}
또한 다시 작성할 수 있습니다.
function bouncer( arr ){
return arr.filter( function( value ){
return value;
});
}
arr.filter () 메서드를 사용하여이 작업을 수행 할 수 있다는 것을 알고 있습니다. 하지만 저는 Boolean () 함수를 사용하는 것을 선호합니다. 나에게 더 명확합니다. 조금 더 길지만 다음은 내가 한 방법입니다.
function bouncer(arr) {
// Don't show a false ID to this bouncer.
var falsy;
var trueArr = [];
for (i = 0; i < arr.length; i++) {
falsy = Boolean(arr[i]);
if (falsy === true) {
trueArr.push(arr[i]);
}
}
return trueArr;
}
bouncer([7, "ate", "", false, 9]);
// returns a new array that is filtered accordingly.
이것은 또 다른 동등하지만 예시적인 솔루션입니다.
function bouncer( arr ){
return arr.filter( function( value ){
return value ? true : false;
});
}
이 코드 샘플은 변수 value
가 진실 또는 거짓으로 평가되고 익명 함수가 의 평가에 매핑 되는 부울 ( true
또는)을 반환 할 것임을 독자에게 나타 내기 때문에 예시 false
입니다 value
.
진실성을 기반으로 배열에서 값을 제거하는 이러한 접근 방식에 익숙하지 않은 사람 또는 filter
함수 에 익숙하지 않은 (또는 설명서를 읽지 않은) 사람 에게이 예제는 여전히 가장 간결한 것입니다. filter
기능 의 동작.
물론 응용 프로그램에서 더 간결하지만 통찰력이 떨어지는 구현을 선택할 수 있습니다.
function bouncer( arr ){
return arr.filter( function( value ){
return value;
});
}
필터를 사용하여 작성할 수 있습니다.
function bouncer(arr) {
return arr.filter(item => item);
}
bouncer([false, null, 0, NaN, undefined, ""]) // will return [].
이 간단한 필터를 사용하면 다음을 수행 할 수 있습니다.
array.filter(Boolean)
여기 에 대한 자세한 내용을 읽을 수 있습니다.Boolean
이런 식으로 더 나은 거래를 생각합니다
function bouncer(arr) {
arr = arr.filter(function(item) {
return item;
return arr;
bouncer([7, "ate", "", false, 9, NaN, undefined, 0]);
경비원 기능 :
function bouncer(arr) {
return arr.filter((val) => {
return !!val;
});
}
console.log(bouncer([7, "ate", "", false, 9]));
위의 모든 작업 답변에 감사드립니다. 문제를 해결하기위한 3 가지 방법이 있습니다. 세 번째 솔루션은 @Vignesh 접근 방식으로 문제를 해결했습니다.
1.
function bouncer(arr) {
return arr.filter( function( val ){
return val;
});
}
2.
function bouncer(arr) {
return arr.filter(Boolean);
}
3.
function bouncer(arr) {
return arr.filter(function(val){
return val !== false && val !== "" && !(Number.isNaN(val)) && val !==
undefined && val !== 0 && val !== null;
});
}
이건 내 생각이야 ...
function bouncer(arr) {
// Don't show a false ID to this bouncer.
var result = [];
function isGood(obj){
if(!Boolean(obj)){
return false;
} else {
return true;
}
}
for (var i=0; i < arr.length; i++){
if (isGood(arr[i]) === true){
result.push(arr[i]);
}
}
return result;
}
console.log(bouncer([7, "ate", "", false, 9]));
function bouncer(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i]) {
result.push(arr[i]);
}
}
return result;
}
bouncer([7, "ate", "", false, 9]);
function falsy(value) {
if (value) {
return value;
}
}
function bouncer(arr) {
var filter = arr.filter(falsy);
return filter;
}
bouncer([7, "ate", "", false, 9]);
function removeFalsy(value){
var val = Boolean(value);
if(!val)
return false;
return true;
}
function bouncer(arr) {
return arr.filter(removeFalsy);
}
bouncer([7, "ate", "", false, 9]);
function bouncer(arr) {
function filterFalse(value) {
var a = Boolean(value);
if (a === true) {
return a;
}
return a;
}
function filterArray(x) {
var y = filterFalse(x);
if (y) {
return true;
} else {
return false;
}
}
var newArr = arr.filter(filterArray);
return newArr;
}
bouncer([1, null, NaN, 2, undefined]);
이것은 당신이 찾고있는 것이어야합니다 :
let array = [7, 'ate', '', false, 9, NaN];
function removeFalsyItems(array) {
// Your result
let filter = array.filter(Boolean);
// Empty the array
array.splice(0, array.length);
// Push all items from the result to our array
Array.prototype.push.apply(array, filter);
return array
}
removeFalsyItems(array) // => [7, 'ate', 9], funny joke btw...
lodash는 트릭을 훌륭하게 수행 할 수 있으며 _.compact () 함수가 있습니다.
const arr = [7, "ate", "", false, 9, NaN];
console.log(_.compact(arr));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
필터와 부울을 사용해보십시오.
let array = [7,"ate","",false,9];
array.filter((values) => {return Boolean(values) === true })
부울로 "캐스트"하려면 두 번 부정하면됩니다. !NaN === true
=>!!NaN === false
const truthy = arr.filter(o => !!o)
function bouncer(arr) {
// Don't show a false ID to this bouncer.
for (var i = 0; i < arr.length; i++) {
if (!arr[i]) {
arr.splice(i, 1);
i = i-1;
}
}
return arr;
}
bouncer([7, "ate", "", false, 9]);
참조 URL : https://stackoverflow.com/questions/32906887/remove-all-falsy-values-from-an-array
'programing' 카테고리의 다른 글
배열을 이동하는 C # 가장 빠른 방법 (0) | 2021.01.16 |
---|---|
Ubuntu에 설치된 OpenCV 버전 찾기 (0) | 2021.01.16 |
PostgreSQL을 설치할 수 없음 : Windows XP에서 Microsoft VC ++ 런타임 설치 프로그램을 실행하는 동안 오류가 발생했습니다. (0) | 2021.01.16 |
MySQL-Entity : 'TableDetails'테이블의 'IsPrimaryKey'열 값이 DBNull입니다. (0) | 2021.01.16 |
프로그래밍 방식으로 iPhone 인터페이스 방향을 결정하는 방법은 무엇입니까? (0) | 2021.01.16 |