programing

모델 가져오기 시 1을 true로 또는 0을 false로 변환하는 방법

codeshow 2023. 7. 31. 22:03
반응형

모델 가져오기 시 1을 true로 또는 0을 false로 변환하는 방법

나는 mysql 데이터베이스의 JSON 응답으로 설정된 모델을 가지고 있습니다.모델 데이터는 true 또는 false로 데이터베이스의 부울/작은 의미 필드에 설정됩니다. 이 필드는 다음을 사용합니다.1또는0.

내가 보기에는 밑줄이 있는 부울을 확인하는 바인딩이 있습니다._.isBoolean물론, 내 모델이 데이터를 받을 때, 그것은 다음과 같이 설정됩니다.1또는0참 또는 거짓 대신에 그리고._.isBoolean검사가 실패합니다.

mysql의 내 JSON 응답을 정확하게 boolean true 또는 false 값으로 하는 방법이 있습니까?1또는0또는 가급적이면 내 모델을 가져올 때(뷰가 렌더링되기 전) 캐스트할 수 있도록 업데이트할 수 있는 방법이 있습니까?true또는false1이나 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;
}

업데이트: 7년 후, 저는 발견했습니다.Number(string)좀 더 우아한 전환.또한 물체를 돌연변이 시키는 것은 좋은 생각이 아닙니다.그것은 다음과 같습니다.

parse: function (response) {
  return Object.assign({}, response, {
    isChecked: !!Number(response.isChecked), // OR
    isChecked: Boolean(Number(response.isChecked))
  });
}

이중 사용 안 함:

!!1 = true;

!!0 = false;

obj.isChecked = !!parseInt(obj.isChecked);

여기 더 길지만 더 읽기 쉬운 다른 옵션이 있습니다.

Boolean(Number("0")); // false
Boolean(Number("1")); // true

속성 값에 비교 할당

자바스크립트

속성 비교를 다음에 할당할 수 있습니다."1"

obj["isChecked"] = (obj["isChecked"]==="1");

이 값은 다음의 문자열 값에 대해서만 평가됩니다."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
Boolean(Number(myVar))

또는

!!+myVar

또 다른 해결 방법은 부울을 포함하는 배열을 만들고 해당 부울을 인덱스에 할당하는 것입니다.아래에서 설명하겠습니다.

const bools = [false,true];

int 또는 str을 사용하여 원하는 부울에 액세스합니다.

bools['0'] (str)또는bools[0] (int)브라우저에서 올바르게 작동하고 올바른 값을 산출해야 합니다.최근에 확인란 값을 설정하는 데 사용했습니다.

이것이 도움이 되었기를 바랍니다.

언급URL : https://stackoverflow.com/questions/16313222/how-to-convert-1-to-true-or-0-to-false-upon-model-fetch

반응형