মডেল আনার জন্য কীভাবে 1 টিকে সত্য বা 0 টিতে মিথ্যাতে রূপান্তর করা যায়


104

আমার কাছে এমন একটি মডেল রয়েছে যা একটি মাইএসকিএল ডাটাবেস থেকে জেএসএন প্রতিক্রিয়া সহ সেট করা আছে। মডেল ডেটা ডাটাবেসে বুলিয়ান / টিনিনেন্ট ফিল্ডে সত্য বা মিথ্যা দিয়ে সেট করা হয়, যা ব্যবহার করে 1বা 0

আমার দৃষ্টিতে আমার একটি বাইন্ডিং রয়েছে যা আন্ডারস্কোর সহ একটি বুলিয়ান পরীক্ষা করে _.isBoolean। অবশ্যই, যখন আমার মডেল ডেটা গ্রহণ করবে, এটি সত্য বা মিথ্যা 1বা 0তার পরিবর্তে সেট করা হবে এবং _.isBooleanচেক ব্যর্থ হয়।

মাইএসকিএল থেকে আমার জেএসওএন প্রতিক্রিয়াটি সঠিকভাবে বা বুলেটের সত্য বা মিথ্যা মানের পরিবর্তে 1বা এর পরিবর্তে বা তার চেয়ে বেশি বাছাই 0করার উপায় আছে, বা আমার পছন্দ অনুযায়ী মডেল আপডেট করার উপায় রয়েছে (এবং ভিউ রেন্ডারগুলির আগে) কাস্ট করা trueবা তার falseউপর ভিত্তি করে এটা 1 বা 0 সম্পত্তি?

উদাহরণস্বরূপ, আমার মডেলের ডেটা দেখতে {"isChecked":"1"}যখন এটির দরকার হয় তখন মনে হয়{"isChecked":true}

আপনার যে কোনও পরামর্শের জন্য আপনাকে ধন্যবাদ!


সার্ভার সাইড প্রযুক্তি ব্যবহার করা হয় কি?
অরুণ পি জনি

পিএইচপি, প্রশ্নের উত্তরটি json_encode দিয়ে উত্তরটি লেখা হচ্ছে
ক্রিস এম

আপনি কি উপায়টি দিয়ে চেষ্টা করেছেন: isChecked = isCeded? সত্য: মিথ্যা
উলুগব্যাক রোজিম্বয়েভ

উত্তর:


198

আপনার যা যা দরকার তা হ'ল এর সাথে রূপান্তর করা 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))
  });
}

18
intপ্রথমে রূপান্তর করার জন্য +1 । !!+"1"; // true, !!+"0"; // false, !!+1; // true, !!+0; // false
টেরি ইয়ং

80

একটি ডাবল নয় ব্যবহার করুন:

!!1 = true;

!!0 = false;

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

4
এটি আমার পক্ষে কাজ করেছে তবে কোনও কারণে আমার এখনও একটি বিশ্লেষণ করতে হয়েছিলvalue = (!!parseInt(value) ? true : false)
রিক

ঠিক নিশ্চিত হতে, !!2বা অন্য কোনও সংখ্যা = false, তাই না?
এলিয়াহ মক

না, 2 2 সত্য হবে, এটি কেবল 0
ডেভ

64

এখানে আরও একটি বিকল্প যা দীর্ঘতর তবে আরও পঠনযোগ্য হতে পারে:

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

7
পাঠযোগ্যতা এফটিডব্লিউ!
শূন্য_কুল

9
2020 এ, এটি
asnwer

14

সম্পত্তি মানের সাথে তুলনা নির্ধারণ করা

জাভাস্ক্রিপ্ট

আপনি সম্পত্তি তুলনা নির্ধারণ করতে পারে "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

পিএইচপি

পিএইচপি তে একই ধারণা

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

জাভাস্ক্রিপ্ট প্রয়োগের জন্য উপরে বর্ণিত একই অপারেটরের সীমাবদ্ধতা প্রয়োগ হয়।

ডাবল নট

'ডাবল নট'ও কাজ করে না। লোকেরা যখন প্রথম এটি পড়ে তখন এটি বিভ্রান্তিকর হয় তবে এটি পূর্ণসংখ্যার / সংখ্যা টাইপের মানগুলির জন্য উভয় ভাষায় কাজ করে। এটি স্ট্রিং ধরণের মানগুলির জন্য জাভাস্ক্রিপ্টে কাজ করে না কারণ তারা সর্বদা সত্যকে মূল্যায়ন করে:

জাভাস্ক্রিপ্ট

!!"1"; //true
!!"0"; //true
!!1; //true
!!0; //false
!!parseInt("0",10); // false

পিএইচপি

echo !!"1"; //true
echo !!"0"; //false
echo !!1; //true
echo !!0; //false

ভাল ধারণা ক্রিস্টোফার, আমি লিখে লিখে এটি অর্জন করতে পেরেছিলাম: of this.model.set ('isChecked', (this.model.get ('isChecked') === '1')) my আমার আরম্ভের ক্রিয়ায় ব্যাকবোন ভিউ।
ক্রিস এম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.