একটি সংখ্যায় st, nd, rd এবং th (অর্ডিনাল) প্রত্যয় যুক্ত করুন


150

আমি বর্তমান দিনের উপর ভিত্তি করে গতিশীলভাবে পাঠ্যের একটি স্ট্রিং তৈরি করতে চাই। সুতরাং, উদাহরণস্বরূপ, যদি এটি প্রথম দিন হয় তবে আমি আমার কোডটি = "এটির << ছদ্মবেশী 1 * <গতিশীল স্ট্রিং> স্টা </ ডায়নামিক স্ট্রিং> * </ সিনেমা >> উত্পন্ন করতে চাই ।"

মোট 12 দিন রয়েছে তাই আমি নিম্নলিখিতটি করেছি:

  1. আমি লুপের জন্য একটি সেট আপ করেছি যা 12 দিনের মধ্যে লুপ হয়ে যায়।

  2. আমার এইচটিএমএলে আমি আমার উপাদানটিকে একটি অনন্য আইডি দিয়েছি যার সাথে এটি লক্ষ্যবস্তু করতে হবে, নীচে দেখুন:

    <h1 id="dynamicTitle" class="CustomFont leftHeading shadow">On The <span></span> <em>of rest of generic text</em></h1>
  3. তারপরে, আমার ফর লুপের ভিতরে আমার কাছে নিম্নলিখিত কোড রয়েছে:

    $("#dynamicTitle span").html(i);
    var day = i;
    if (day == 1) {
        day = i + "st";
    } else if (day == 2) {
        day = i + "nd"
    } else if (day == 3) {
        day = i + "rd"
    }

হালনাগাদ

অনুরোধ অনুযায়ী লুপের জন্য এটি সম্পূর্ণ:

$(document).ready(function () {
    for (i = 1; i <= 12; i++) {
        var classy = "";
        if (daysTilDate(i + 19) > 0) {
            classy = "future";
            $("#Day" + i).addClass(classy);
            $("#mainHeading").html("");
            $("#title").html("");
            $("#description").html("");
        } else if (daysTilDate(i + 19) < 0) {
            classy = "past";
            $("#Day" + i).addClass(classy);
            $("#title").html("");
            $("#description").html("");
            $("#mainHeading").html("");
            $(".cta").css('display', 'none');
            $("#Day" + i + " .prizeLink").attr("href", "" + i + ".html");
        } else {
            classy = "current";
            $("#Day" + i).addClass(classy);
            $("#title").html(headings[i - 1]);
            $("#description").html(descriptions[i - 1]);
            $(".cta").css('display', 'block');
            $("#dynamicImage").attr("src", ".." + i + ".jpg");
            $("#mainHeading").html("");
            $(".claimPrize").attr("href", "" + i + ".html");
            $("#dynamicTitle span").html(i);
            var day = i;
            if (day == 1) {
                day = i + "st";
            } else if (day == 2) {
                day = i + "nd"
            } else if (day == 3) {
                day = i + "rd"
            } else if (day) {
            }
        }
    }

1
যদি আপনার সোর্স কোডটি যথেষ্ট সংক্ষিপ্ত হয় তবে আপনি কি পুরো জিনিসটি পোস্ট করতে এবং কী ভুল তা হ'ল বা আপনাকে বিভ্রান্ত করছেন তা বলতে কি আপনার আপত্তি হবে?
রোনাল্ডবারজেল

আপনার কোডটি বর্তমানে / করায় না এমনটি কী? কী ভুল হচ্ছে তা আপনি পরিষ্কারভাবে জানাননি।
পয়েন্টি

আমি দেখানো কোডটি অনুমান করছি যে কোনও ifব্লকের বিষয়বস্তু যা আরও লুপ দ্বারা অন্তর্ভুক্ত? আরও কোড দেখান ....
মিস্টার

@ এমআরকোড - হ্যাঁ আপনি ঠিক বলেছেন। লুপের জন্য পুরোটি অন্তর্ভুক্ত করতে আমি পোস্টটি আপডেট করেছি। আমি আশা করি এটি পরিষ্কার হয়ে যায়!
আন্তোনিও ভাসিলেভ

ঝরঝরে এবং এটি ভাল কাজ করে।
ড্যান জে

উত্তর:


345

নিয়ম হলো:

  • সেন্ট 1 এ শেষ হওয়া সংখ্যার সাথে ব্যবহৃত হয় (উদাহরণস্বরূপ প্রথম, প্রথম উচ্চারিত)
  • এনডি 2 সহ শেষ হওয়া সংখ্যার সাথে ব্যবহৃত হয় (উদাহরণস্বরূপ 92 তম, উনিশ-সেকেন্ডে উচ্চারণ করা)
  • rd 3 এর সাথে শেষ হওয়া সংখ্যার সাথে ব্যবহৃত হয় (উদাহরণস্বরূপ 33 তম, তৃতীয়টি উচ্চারিত)
  • উপরোক্ত নিয়মগুলির ব্যতিক্রম হিসাবে, 11, 12 বা 13 টি ব্যবহারের সাথে শেষ হওয়া সমস্ত "কিশোর" সংখ্যা ব্যবহার করুন (উদাহরণস্বরূপ 11 তম, উচ্চারিত একাদশ, 112 তম, একশত [এবং দ্বাদশটি উচ্চারিত)
  • তম অন্যান্য সমস্ত সংখ্যার জন্য (যেমন 9 ম, উচ্চারিত নবম) ব্যবহৃত হয়।

নিম্নলিখিত জাভাস্ক্রিপ্ট কোড (জুন '14 এ পুনরায় লিখিত) এটি সম্পাদন করে:

function ordinal_suffix_of(i) {
    var j = i % 10,
        k = i % 100;
    if (j == 1 && k != 11) {
        return i + "st";
    }
    if (j == 2 && k != 12) {
        return i + "nd";
    }
    if (j == 3 && k != 13) {
        return i + "rd";
    }
    return i + "th";
}

0-115 এর মধ্যে সংখ্যার জন্য নমুনা আউটপুট:

  0  0th
  1  1st
  2  2nd
  3  3rd
  4  4th
  5  5th
  6  6th
  7  7th
  8  8th
  9  9th
 10  10th
 11  11th
 12  12th
 13  13th
 14  14th
 15  15th
 16  16th
 17  17th
 18  18th
 19  19th
 20  20th
 21  21st
 22  22nd
 23  23rd
 24  24th
 25  25th
 26  26th
 27  27th
 28  28th
 29  29th
 30  30th
 31  31st
 32  32nd
 33  33rd
 34  34th
 35  35th
 36  36th
 37  37th
 38  38th
 39  39th
 40  40th
 41  41st
 42  42nd
 43  43rd
 44  44th
 45  45th
 46  46th
 47  47th
 48  48th
 49  49th
 50  50th
 51  51st
 52  52nd
 53  53rd
 54  54th
 55  55th
 56  56th
 57  57th
 58  58th
 59  59th
 60  60th
 61  61st
 62  62nd
 63  63rd
 64  64th
 65  65th
 66  66th
 67  67th
 68  68th
 69  69th
 70  70th
 71  71st
 72  72nd
 73  73rd
 74  74th
 75  75th
 76  76th
 77  77th
 78  78th
 79  79th
 80  80th
 81  81st
 82  82nd
 83  83rd
 84  84th
 85  85th
 86  86th
 87  87th
 88  88th
 89  89th
 90  90th
 91  91st
 92  92nd
 93  93rd
 94  94th
 95  95th
 96  96th
 97  97th
 98  98th
 99  99th
100  100th
101  101st
102  102nd
103  103rd
104  104th
105  105th
106  106th
107  107th
108  108th
109  109th
110  110th
111  111th
112  112th
113  113th
114  114th
115  115th

1
এটি আমার জন্যও সত্যই ভাল কাজ করেছে: ডেটস্ট্রিং = মাসের নামগুলি [newValue.getUTCMonth ()] + "" + সংখ্যাসুফিক্স (newValue.getUTCDCD ()) + "," + newValue.getUTCFullYear ();
মাইকেল জে। ক্যালকিনস

9
এটি তিনটি "কিশোর" সংখ্যার ব্যতিক্রমগুলি সঠিকভাবে পরিচালনা করে না। উদাহরণস্বরূপ সংখ্যার জন্য 111, 112এবং 113এর ফলে উচিত "111th", "112th"এবং "113th"যথাক্রমে না"111st" , "112nd"এবং "113rd"ফাংশন বর্তমানে কোডেড যেমন দ্বারা উত্পাদিত।
মার্টিনো

3
এই উত্তরটি নিখুঁতভাবে বিকশিত হয়েছে বলে মনে হচ্ছে। সমস্ত অবদানকারীকে ধন্যবাদ।
লনি সেরা

7
আমি কোনও বাস্তব কারণ ছাড়াই এটি ES6 ল্যাম্বডা হিসাবে চিহ্নিত করেছি:n=>n+(n%10==1&&n%100!=11?'st':n%10==2&&n%100!=12?'nd':n%10==3&&n%100!=13?'rd':'th')
কামিলো মার্টিন

1
@ অ্যানোমালি মজাদারভাবে যথেষ্ট, ~ π / 2 বছর পরে আমি এখনও এটি পড়তে পারি।
ক্যামিলো মার্টিন

210

শপাইফ থেকে

function getNumberWithOrdinal(n) {
  var s = ["th", "st", "nd", "rd"],
      v = n % 100;
  return n + (s[(v - 20) % 10] || s[v] || s[0]);
}

[-4,-1,0,1,2,3,4,10,11,12,13,14,20,21,22,100,101,111].forEach(
  n => console.log(n + ' -> ' + getNumberWithOrdinal(n))
);


22
ব্যাখ্যা যুক্ত করা এটি আরও ভাল উত্তর করতে পারে!
পুগাজ

5
@ পুগাজ এ। সন্ধান করুন [v% 10] যদি> = 20 (20 তম ... 99 তম), বি পাওয়া যায় না, তবে [ভি] (0 তম ..3 তম), সি চেষ্টা করুন, যদি এখনও খুঁজে না পাওয়া যায় তবে এস ব্যবহার করুন [0] (4th..19th)
Sheepy

4
কেন ডাবল যদিও ফাংশন নাম পেতে?
গিশেরি

46

অর্ডিনাল প্রত্যয়গুলির জন্য ন্যূনতম এক-লাইন পদ্ধতির

function nth(n){return["st","nd","rd"][((n+90)%100-10)%10-1]||"th"}

(এটি ইতিবাচক পূর্ণসংখ্যার জন্য, অন্যান্য প্রকরণের জন্য নীচে দেখুন)

ব্যাখ্যা

প্রত্যয় দিয়ে একটি অ্যারে দিয়ে শুরু করুন ["st", "nd", "rd"]। আমরা সূচক 0, 1, 2 এর 1, 2, 3 (তবে 11, 12, 13 এ শেষ হবে না) পূর্ণসংখ্যার মানচিত্র করতে চাই।

অন্যান্য পূর্ণসংখ্যা (11, 12, 13 এ শেষ হওয়া সহ) অন্য যে কোনও কিছুতে ম্যাপ করা যায় can অ্যারেটিতে পাওয়া যায় না এমন সূচকগুলি মূল্যায়ন করবে undefined। এটি জাভাস্ক্রিপ্টে মিথ্যা এবং লজিক্যাল বা ( || "th") ব্যবহারের সাহায্যে "th"এই পূর্ণসংখ্যার জন্য অভিব্যক্তি ফিরে আসবে , যা আমরা যা চাই ঠিক তাই।

এক্সপ্রেশন ((n + 90) % 100 - 10) % 10 - 1ম্যাপিং করে। এটি ভেঙে দেওয়া:

  • (n + 90) % 100: এই এক্সপ্রেশনটি ইনপুট পূর্ণসংখ্যা নেয় - 10 মড 100, ম্যাপিং 10 থেকে 0, ... 99 থেকে 89, 0 থেকে 90, ..., 9 থেকে 99. এখন 11, 12, 13 এ শেষ হওয়া পূর্ণসংখ্যাগুলি নীচে রয়েছে শেষ (1, 2, 3 এ ম্যাপ করা হয়েছে)।
  • - 10: এখন 10 কে 10,, 19 থেকে −1, 99 থেকে 79, 0 থেকে 80, ... 9 থেকে 89 এ ম্যাপ করা হয়েছে। 11, 12, 13 এ শেষ হওয়া পূর্ণসংখ্যাগুলি নেতিবাচক পূর্ণসংখ্যায় ম্যাপ করা হয় (−9, −8, -7)।
  • % 10: এখন 1, 2, বা 3 এ শেষ হওয়া সমস্ত পূর্ণসংখ্যার 1, 2, 3 এ ম্যাপ করা হয়েছে।
  • - 1: একটিকে বিয়োগ করা 1, 2, 3 থেকে 0, 1, 2 এর চূড়ান্ত ম্যাপিং দেয়।

এটি কাজ করে যাচাই করা হচ্ছে

function nth(n){return["st","nd","rd"][((n+90)%100-10)%10-1]||"th"}

//test integers from 1 to 124
for(var r = [], i = 1; i < 125; i++) r.push(i + nth(i));

//output result
document.getElementById('result').innerHTML = r.join('<br>');
<div id="result"></div>

প্রকারভেদ

নেতিবাচক পূর্ণসংখ্যার অনুমতি দেওয়া:

function nth(n){return["st","nd","rd"][(((n<0?-n:n)+90)%100-10)%10-1]||"th"}

ES6 ফ্যাট তীর সিনট্যাক্সে (বেনামে ফাংশন):

n=>["st","nd","rd"][(((n<0?-n:n)+90)%100-10)%10-1]||"th"

হালনাগাদ

ইতিবাচক পূর্ণসংখ্যার জন্য একটি আরও ছোট বিকল্প হ'ল প্রকাশ

[,'st','nd','rd'][n%100>>3^1&&n%10]||'th'

এই পোস্টটি দেখুনব্যাখ্যার জন্য ।

আপডেট 2

[,'st','nd','rd'][n/10%10^1&&n%10]||'th'

3
মার্জিত। আমার পছন্দ.
লোক মোগরবী


10

Intl.PluralRules, মান পদ্ধতি।

আমি এখানে এটি করার প্রচলিত পদ্ধতিটি বাদ দিতে চাই, কারণ এটি কেউ জানে বলে মনে হচ্ছে না।

const english_ordinal_rules = new Intl.PluralRules("en", {type: "ordinal"});
const suffixes = {
	one: "st",
	two: "nd",
	few: "rd",
	other: "th"
};
function ordinal(number) {
	const suffix = suffixes[english_ordinal_rules.select(number)];
	return (number + suffix);
}

const test = Array(201)
	.fill()
	.map((_, index) => index - 100)
	.map(ordinal)
	.join(" ");
console.log(test);


1
এটিই একমাত্র ভাল সাধারণ সমাধান কারণ এটি এখানে একমাত্র উত্তর যা নেতিবাচক সংখ্যাগুলি পরিচালনা করে।
রবিজি

7

আপনি মাত্র 12 দিন পেয়েছেন? আমি এটিকে কেবল একটি সাধারণ অনুসন্ধানের অ্যারে হিসাবে প্রলুব্ধ করব:

var suffixes = ['','st','nd','rd','th','th','th','th','th','th','th','th','th'];

তারপর

var i = 2;
var day = i + suffixes[i]; // result: '2nd'

অথবা

var i = 8;
var day = i + suffixes[i]; // result: '8th'

ধন্যবাদ, এটি আমার সমস্যার সমাধান করেছে। আমি দিনের সাথে মিলের সাথে প্রত্যয়টি পেলাম না তাই আমি স্রেফ অ্যারে, উভয়ই, সংখ্যা এবং প্রত্যয় যা পুরোপুরি কাজ করে তা নিয়ে পপুলাই করেছি। আমি তখন এটিকে সহজভাবে বলেছিলাম$("#dynamicTitle span").html(suffix[i-1]);
আন্তোনিও ভাসেলিভ

7

একটি অ্যারেতে নম্বরটি বিভক্ত করে এবং বিপরীত করে আমরা সহজেই array[0]এবং ব্যবহার করে সংখ্যার শেষ 2 সংখ্যা সহজেই পরীক্ষা করতে পারি array[1]

যদি একটি সংখ্যা array[1] = 1কৈশোর হয় তবে এর জন্য "তম" প্রয়োজন।

function getDaySuffix(num)
{
    var array = ("" + num).split("").reverse(); // E.g. 123 = array("3","2","1")

    if (array[1] != "1") { // Number is in the teens
        switch (array[0]) {
            case "1": return "st";
            case "2": return "nd";
            case "3": return "rd";
        }
    }

    return "th";
}

এটি নিখুঁত। ধন্যবাদ!
জেসন

আপনাকে 11, 12, 13
পিএক্সএক্স

2
@psx 5 লাইনের শর্তটি এটাই।
নিক

4
function getSuffix(n) {return n < 11 || n > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((n - 1) % 10, 3)] : 'th'}

খুব ভাল অনলাইনার, বুঝতে কিছুটা শক্ত
ব্রাইক

ব্যর্থ হয়েছে যেখানে n == 0 n - 1অংশের কারণে (অপরিবর্তিত অবধি)। ১১০ এর বেশি সংখ্যার জন্যও ব্যর্থ হয়, যেমন getSuffix(111)"st" প্রদান করে। এটি ওপির সমস্যাটি সমাধান করে যেখানে সংখ্যাগুলি 1 থেকে 12, তবে এটি কোনও সাধারণ সমাধান নয়। :-(
রবিজি

2

এই সমস্যাটি সমাধান করার জন্য আমি এই ফাংশনটি লিখেছি:

// this is for adding the ordinal suffix, turning 1, 2 and 3 into 1st, 2nd and 3rd
Number.prototype.addSuffix=function(){
    var n=this.toString().split('.')[0];
    var lastDigits=n.substring(n.length-2);
    //add exception just for 11, 12 and 13
    if(lastDigits==='11' || lastDigits==='12' || lastDigits==='13'){
        return this+'th';
    }
    switch(n.substring(n.length-1)){
        case '1': return this+'st';
        case '2': return this+'nd';
        case '3': return this+'rd';
        default : return this+'th';
    }
};

.addSuffix()এটির সাহায্যে আপনি কেবল যে কোনও সংখ্যায় রাখতে পারেন এবং এটি যা চান তার ফলস্বরূপ। উদাহরণ স্বরূপ:

var number=1234;
console.log(number.addSuffix());
// console will show: 1234th

আমি মনে করি numberএই স্ট্রিংটিতে var lastDigits=n.substring(number.length-2);পরিবর্তন করা উচিতthis
স্লাভা আবাকুমভ

এটি nপরিবর্তে হওয়া উচিত this, তবে যে বাগটি আউট চিহ্নিত করার জন্য ধন্যবাদ! :)
জিমেরি

2

অর্ডিনাল ফাংশনের বিকল্প সংস্করণটি নীচের মত হতে পারে:

function toCardinal(num) {
    var ones = num % 10;
    var tens = num % 100;

    if (tens < 11 || tens > 13) {
        switch (ones) {
            case 1:
                return num + "st";
            case 2:
                return num + "nd";
            case 3:
                return num + "rd";
        }
    }

    return num + "th";
}

ভেরিয়েবলগুলির আরও সুস্পষ্টরূপে নামকরণ করা হয়েছে, উটের কেস কনভেনশন ব্যবহার করা হয়েছে এবং এটি আরও দ্রুত হতে পারে।


এটি স্থানীয়করণ কোড বেসগুলির জন্য কাজ করবে না।
ড্যানিয়েল হার্ভে

1

এই সহজ ফাংশনটি আমি অন্যদিন লিখেছিলাম। যদিও কোনও তারিখের জন্য আপনার আরও বড় সংখ্যার প্রয়োজন নেই, এটি উচ্চতর মানগুলিও পূরণ করবে (1013 তম, 36021st ইত্যাদি ...)

var fGetSuffix = function(nPos){

    var sSuffix = "";

    switch (nPos % 10){
        case 1:
            sSuffix = (nPos % 100 === 11) ? "th" : "st";
            break;
        case 2:
            sSuffix = (nPos % 100 === 12) ? "th" : "nd";
            break;
        case 3:
            sSuffix = (nPos % 100 === 13) ? "th" : "rd";
            break;
        default:
            sSuffix = "th";
            break;
    }

    return sSuffix;
};

1

function ordsfx(a){return["th","st","nd","rd"][(a=~~(a<0?-a:a)%100)>10&&a<14||(a%=10)>3?0:a]}

Https://gist.github.com/furf/986113#file-annotated-js এ টীকাযুক্ত সংস্করণটি দেখুন

সংক্ষিপ্ত, মিষ্টি এবং দক্ষ, যেমন ইউটিলিটি ফাংশন হওয়া উচিত। যে কোনও স্বাক্ষরিত / স্বাক্ষরযুক্ত পূর্ণসংখ্যা / ভাসা নিয়ে কাজ করে। (যদিও আমি ভাসা সামঞ্জস্য করার প্রয়োজনের কল্পনাও করতে পারি না)


0

এখানে আরও একটি বিকল্প রয়েছে।

function getOrdinalSuffix(day) {
        
   	if(/^[2-3]?1$/.test(day)){
   		return 'st';
   	} else if(/^[2-3]?2$/.test(day)){
   		return 'nd';
   	} else if(/^[2-3]?3$/.test(day)){
   		return 'rd';
   	} else {
   		return 'th';
   	}
        
}
    
console.log(getOrdinalSuffix('1'));
console.log(getOrdinalSuffix('13'));
console.log(getOrdinalSuffix('22'));
console.log(getOrdinalSuffix('33'));

কিশোর-কিশোরীদের ব্যতিক্রম লক্ষ্য করুন? কিশোররা এত আক্কর!

সম্পাদনা: একাদশ এবং দ্বাদশ সম্পর্কে ভুলে গেছেন


0

বিদ্যমান উত্তরটির পরিপূরক করতে আমি এই প্রশ্নের কার্যকরী উত্তর দিতে চেয়েছিলাম:

const ordinalSuffix = ['st', 'nd', 'rd']
const addSuffix = n => n + (ordinalSuffix[(n - 1) % 10] || 'th')
const numberToOrdinal = n => `${n}`.match(/1\d$/) ? n + 'th' : addSuffix(n)

আমরা বিশেষ মানগুলির একটি অ্যারে তৈরি করেছি, গুরুত্বপূর্ণ জিনিসটি মনে রাখতে হবে অ্যারেগুলিতে শূন্য ভিত্তিক সূচক রয়েছে সুতরাং অর্ডিনালসুফিক্স [0] 'st' এর সমান।

আমাদের ফাংশন নম্বরটি অরডিনাল পরীক্ষা করে যদি সংখ্যাটি কিশোর সংখ্যায় শেষ হয় তবে এই ক্ষেত্রে সংখ্যাটি 'ম' এর সাথে সংযুক্ত করা হয়েছে কারণ সমস্ত সংখ্যার অর্ডিনালগুলি 'তম' রয়েছে। যদি সংখ্যাটি কিশোর না হয় তবে আমরা অ্যাডসফিক্সে নম্বরটি পাস করি যা অর্ডিনালে সংখ্যাটি যুক্ত করে যা নির্ধারিত হয় যদি সংখ্যার বিয়োগ 1 (কারণ আমরা একটি শূন্য ভিত্তিক সূচক ব্যবহার করছি) মোড 10 এর বাকি 2 থাকে বা কম এটি অ্যারে থেকে নেওয়া হয়েছে, অন্যথায় এটি 'ম'।

নমুনা আউটপুট:

numberToOrdinal(1) // 1st
numberToOrdinal(2) // 2nd
numberToOrdinal(3) // 3rd
numberToOrdinal(4) // 4th
numberToOrdinal(5) // 5th
numberToOrdinal(6) // 6th
numberToOrdinal(7) // 7th
numberToOrdinal(8) // 8th
numberToOrdinal(9) // 9th
numberToOrdinal(10) // 10th
numberToOrdinal(11) // 11th
numberToOrdinal(12) // 12th
numberToOrdinal(13) // 13th
numberToOrdinal(14) // 14th
numberToOrdinal(101) // 101st

0

পুরানো একটি আমি আমার জিনিস জন্য তৈরি ...

function convertToOrdinal(number){
    if (number !=1){
        var numberastext = number.ToString();
        var endchar = numberastext.Substring(numberastext.Length - 1);
        if (number>9){
            var secondfromendchar = numberastext.Substring(numberastext.Length - 1);
            secondfromendchar = numberastext.Remove(numberastext.Length - 1);
        }
        var suffix = "th";
        var digit = int.Parse(endchar);
        switch (digit){
            case 3:
                if(secondfromendchar != "1"){
                    suffix = "rd";
                    break;
                }
            case 2:
                if(secondfromendchar != "1"){
                    suffix = "nd";
                    break;
                }
            case 1:
                if(secondfromendchar != "1"){
                    suffix = "st";
                    break;
                }
            default:
                suffix = "th";
                break;
         }
            return number+suffix+" ";
     } else {
            return;
     }
}

উপরের কোড সম্পর্কে কিছু বিবরণ যুক্ত করুন। এটি কোডের একটি অংশের চেয়ে অনেক বেশি সহায়তা করবে।
ম্যাথিউজ সানি

0

দৃ date়ভাবে দুর্দান্ত তারিখ-fns গ্রন্থাগার সুপারিশ করুন । দ্রুত, মডুলার, অপরিবর্তনীয়, স্ট্যান্ডার্ড তারিখগুলির সাথে কাজ করে।

import * as DateFns from 'date-fns';

const ordinalInt = DateFns.format(someInt, 'do');

তারিখ-এফএনএস ডক্স দেখুন: https://date-fns.org/v2.0.0-alpha.9/docs/ formatt


0

আমি উচ্চ সংখ্যা এবং সমস্ত পরীক্ষার ক্ষেত্রে এই ফাংশনটি লিখেছি

function numberToOrdinal(num) {
    if (num === 0) {
        return '0'
    };
    let i = num.toString(), j = i.slice(i.length - 2), k = i.slice(i.length - 1);
    if (j >= 10 && j <= 20) {
        return (i + 'th')
    } else if (j > 20 && j < 100) {
        if (k == 1) {
            return (i + 'st')
        } else if (k == 2) {
            return (i + 'nd')
        } else if (k == 3) {
            return (i + 'rd')
        } else {
            return (i + 'th')
        }
    } else if (j == 1) {
        return (i + 'st')
    } else if (j == 2) {
        return (i + 'nd')
    } else if (j == 3) {
        return (i + 'rd')
    } else {
        return (i + 'th')
    }
}

0

এখানে কিছুটা ভিন্ন পদ্ধতি রয়েছে (আমি মনে করি না যে অন্যান্য উত্তরগুলি এটি করে)। আমি এটি পছন্দ করি বা ঘৃণা করি তা নিশ্চিত নই, তবে এটি কার্যকর!

export function addDaySuffix(day: number) { 
  const suffixes =
      '  stndrdthththththththththththththththththstndrdthththththththst';
    const startIndex = day * 2;

    return `${day}${suffixes.substring(startIndex, startIndex + 2)}`;
  }

0

এটি এক লাইনার এবং এস -6 এর প্রেমীদের জন্য

let i= new Date().getDate 

// I can be any number, for future sake we'll use 9

const j = I % 10;
const k = I % 100;

i = `${i}${j === 1 &&  k !== 11 ? 'st' : j === 2 && k !== 12 ? 'nd' : j === 3 && k !== 13 ? 'rd' : 'th'}`}

console.log(i) //9th

+ সংখ্যাটির জন্য অন্য বিকল্পটি হ'ল:

console.log(["st","nd","rd"][((i+90)%100-10)%10-1]||"th"]

অর্ডিনাল উপসর্গ থেকে মুক্তি পেতে কেবল এগুলি ব্যবহার করুন:

console.log(i.parseInt("8th"))

console.log(i.parseFloat("8th"))

আপনার প্রয়োজন অনুসারে সংশোধন নির্দ্বিধায়


0

আপনি scales::ordinal()ফাংশনটি ব্যবহার করতে পারেন । এটি ব্যবহার করা দ্রুত এবং সহজ।

scales::ordinal(1:12)
## [1] "1st"  "2nd"  "3rd"  "4th"  "5th"  "6th"  "7th"  "8th"  "9th"  "10th" "11th" "12th"

-1

আমি দৃ strongly়ভাবে এটি সুপারিশ, এটি পড়া সহজ এবং সহজবোধ্য। আমি আশা করি এটি সাহায্য করবে?

  • এটি নেতিবাচক পূর্ণসংখ্যা অর্থাৎ 1 এর চেয়ে কম সংখ্যার ব্যবহার এবং মিথ্যা প্রত্যাখ্যান করে
  • ইনপুট 0 হলে এটি 0 প্রদান করে return
function numberToOrdinal(n) {

  let result;

  if(n < 0){
    return false;
  }else if(n === 0){
    result = "0";
  }else if(n > 0){

    let nToString = n.toString();
    let lastStringIndex = nToString.length-1;
    let lastStringElement = nToString[lastStringIndex];

    if( lastStringElement == "1" && n % 100 !== 11 ){
      result = nToString + "st";
    }else if( lastStringElement == "2" && n % 100 !== 12 ){
      result = nToString + "nd";
    }else if( lastStringElement == "3" && n % 100 !== 13 ){
      result = nToString + "rd";
    }else{
      result = nToString + "th";
    }

  }

  return result;
}

console.log(numberToOrdinal(-111));
console.log(numberToOrdinal(0));
console.log(numberToOrdinal(11));
console.log(numberToOrdinal(15));
console.log(numberToOrdinal(21));
console.log(numberToOrdinal(32));
console.log(numberToOrdinal(43));
console.log(numberToOrdinal(70));
console.log(numberToOrdinal(111));
console.log(numberToOrdinal(300));
console.log(numberToOrdinal(101));

আউটপুট

false
0
11th
15th
21st
32nd
43rd
70th
111th
300th
101st

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.