모델을 가져올 때 1을 true로 또는 0을 false로 변환하는 방법
mysql 데이터베이스의 JSON 응답으로 설정된 모델이 있습니다. 모델 데이터는 어떤 용도로 데이터베이스에 부울 / TINYINT 필드에 true 또는 false로 설정 1
하거나 0
.
내 견해로는 밑줄로 부울을 확인하는 바인딩이 _.isBoolean
있습니다. 물론 내 모델이 데이터를 받으면 true 또는 false 대신 1
또는 0
대신 설정되고 _.isBoolean
확인이 실패합니다.
어쨌든 mysql의 JSON 응답이 1
or 대신 부울 true 또는 false 값이 0
되거나 바람직하게는 캐스트 true
또는 false
기반으로 가져 오기 (및 뷰 렌더링 전에) 내 모델을 업데이트하는 방법이 있습니까? 그것은 1 또는 0 속성입니까?
예를 들어 내 모델의 데이터가 {"isChecked":"1"}
필요할 때 처럼 보입니다 .{"isChecked":true}
제안 해 주셔서 대단히 감사합니다!
당신이 필요로 변환입니다 string
에 int
와 +
와와 부울 할 수있는 결과를 변환 !!
:
var response = {"isChecked":"1"};
response.isChecked = !!+response.isChecked
parse
메서드 에서이 조작을 수행 할 수 있습니다 .
parse : function (response) {
response.isChecked = !!+response.isChecked;
return response;
}
double not 사용 :
!!1 = true;
!!0 = false;
obj.isChecked = !!parseInt(obj.isChecked);
더 길지만 더 읽기 쉬운 또 다른 옵션이 있습니다.
Boolean(Number("0")); // false
Boolean(Number("1")); // true
속성 값에 비교 할당
자바 스크립트
속성 비교를 다음에 할당 할 수 있습니다. "1"
obj["isChecked"] = (obj["isChecked"]==="1");
이것은 String 값에 대해서만 평가됩니다 "1"
. 다른 변수는 실제 typeof number
가 거짓 인 것처럼 거짓으로 평가됩니다. (예 obj["isChecked"]=1
)
"1"
또는 1
에 대해 무차별 화하고 싶다면 다음을 사용할 수 있습니다.
obj["isChecked"] = (obj["isChecked"]=="1");
예제 출력
console.log(obj["isChecked"]==="1"); // true
console.log(obj["isChecked"]===1); // false
console.log(obj["isChecked"]==1); // true
console.log(obj["isChecked"]==="0"); // false
console.log(obj["isChecked"]==="Elephant"); // false
PHP
PHP에서 동일한 개념
$obj["isChecked"] = ($obj["isChecked"] == "1");
JavaScript에 대해 위에서 언급 한 것과 동일한 연산자 제한이 적용됩니다.
더블 아닙니다
'double not'도 작동합니다. 사람들이 처음 읽을 때 혼란 스럽지만 정수 / 숫자 유형 값에 대해 두 언어 모두에서 작동합니다. 그러나 항상 true로 평가되므로 문자열 유형 값에 대해서는 JavaScript에서 작동하지 않습니다.
자바 스크립트
!!"1"; //true
!!"0"; //true
!!1; //true
!!0; //false
!!parseInt("0",10); // false
PHP
echo !!"1"; //true
echo !!"0"; //false
echo !!1; //true
echo !!0; //false
변환 1
'1'
과 'true'
에 true
와 0
'0'
'false'
null
와 undefined
에false
function primitiveToBoolean(value: string | number | boolean | null | undefined): boolean {
if (value === 'true') {
return true;
}
return typeof value === 'string'
? !!+value // we parse string to number first
: !!value;
}
다음은 단위 테스트입니다.
describe('primitiveToBoolean', () => {
it('should be true if its 1 / "1" or "true"', () => {
expect(primitiveToBoolean(1)).toBe(true);
expect(primitiveToBoolean('1')).toBe(true);
expect(primitiveToBoolean('true')).toBe(true);
});
it('should be false if its 0 / "0" or "false"', () => {
expect(primitiveToBoolean(0)).toBe(false);
expect(primitiveToBoolean('0')).toBe(false);
expect(primitiveToBoolean('false')).toBe(false);
});
it('should be false if its null or undefined', () => {
expect(primitiveToBoolean(null)).toBe(false);
expect(primitiveToBoolean(undefined)).toBe(false);
});
it('should pass through booleans - useful for undefined checks', () => {
expect(primitiveToBoolean(true)).toBe(true);
expect(primitiveToBoolean(false)).toBe(false);
});
});
TypeScript 레시피 : Elegant Parse Boolean
참고 URL : https://stackoverflow.com/questions/16313222/how-to-convert-1-to-true-or-0-to-false-upon-model-fetch
'developer tip' 카테고리의 다른 글
PHP 변수 제거, 공백을 대시로 대체 (0) | 2020.11.09 |
---|---|
자바에서 완성 된 미래를 만드는 방법 (0) | 2020.11.09 |
개인 텔레 그램 채널의 chat_id를 얻는 방법은 무엇입니까? (0) | 2020.11.09 |
MacOS 앱이 Xcode 시뮬레이터에서 실행되지 않습니다. (0) | 2020.11.09 |
여러 줄을 편집하는 IntelliJ IDEA 방법 (0) | 2020.11.09 |