লুপ ইনক্রিমেন্ট / একের অধিক দ্বারা হ্রাস পেতে পারে?


119

forজাভাস্ক্রিপ্টে লুপ বাড়ানোর অন্যান্য উপায় রয়েছে i++এবং এছাড়াও ++i? উদাহরণস্বরূপ, আমি একের পরিবর্তে 3 দ্বারা বৃদ্ধি করতে চাই।

for (var i = 0; i < myVar.length; i+3) {
   //every three
}

4
আপনি কি তৃতীয় যুক্তির জন্য i = i + 3 প্রতিস্থাপন করতে পারেন? নাকি তা কেবল জাভাতেই?
সিপিটিজেসস

1
হ্যাঁ এটাই ঠিক আছে i++এবং ++iমত i+=1তাই যদি লুপ ঘোষণা জন্য ব্যবহৃত i+=3কাজ করবে।
এলকাররা

1
একটি forলুপ কিছুই বাড়ায় না। forবিবৃতিতে ব্যবহৃত আপনার কোডটি করে। কীভাবে / যদি / কোথায় / আপনি কখন iসেই বিষয়টির জন্য পরিবর্তন করতে চান বা অন্য কোনও পরিবর্তনশীল তা সম্পূর্ণরূপে আপনার উপর নির্ভর করে।
আমি আলস্যকে ঘৃণা করি

2
এটি লুপের জন্য নয়, এটি একটি অসীম লুপ। আপনি বলতে চাচ্ছেন i+=3
নিনজাগেকো

2
আমি পেয়েছি যে এটি একটি সহজ সমাধান সহ একটি সাধারণ প্রশ্ন, তবে ডাউনভোটদের কারণ কী? আমি নিশ্চিত যে এটি কোনও সদৃশ নয়।
ব্রেন্টনস্ট্রাইন

উত্তর:


253

+= অ্যাসাইনমেন্ট অপারেটরটি ব্যবহার করুন :

for (var i = 0; i < myVar.length; i += 3) {

প্রযুক্তিগতভাবে, আপনি লুপের চূড়ান্ত এক্সপ্রেশনটিতে আপনি যে কোনও অভিব্যক্তি রাখতে চান তা রাখতে পারেন, তবে এটি সাধারণত কাউন্টার ভেরিয়েবল আপডেট করার জন্য ব্যবহৃত হয়।

লুপের প্রতিটি ধাপ সম্পর্কে আরও তথ্যের জন্য, MDN নিবন্ধটি দেখুন


বিশদগুলির জন্য ধন্যবাদ - আমি নিশ্চিত ছিলাম তৃতীয় স্লটে আরও উন্নত এক্সপ্রেশন রাখার উপায় ছিল - আমি কেবল ভুলে গিয়েছিলাম যে এটির পরিবর্তনশীল সংজ্ঞায়িত করা দরকার, সুতরাং স্পষ্টতই i+3কাজ করে না।
ব্রেন্টনস্ট্রাইন

@ ব্রেন্টনস্ট্রাইন: সমস্যা নেই, খুশী আমি সাহায্য করতে পেরেছি
অ্যান্ড্রু হুইটেকার

আমরা যখন করি না তখন অন্তহীন লুপের কারণ কী i+3?
সঞ্জয় শ্র

1
@ সঞ্জয়শ্রহর i+31: 16i
নাহিদ

@ নাহিদ হ্যাঁ, আমি আমার উত্তরটি মন্তব্য করেছি। থ্যাঙ্কস
সঞ্জয় শ্রীর

13

একটি forলুপ:

for(INIT; TEST; ADVANCE) {
    BODY
}

নিম্নলিখিতটির অর্থ:

INIT;
while (true) {
    if (!TEST)
        break;
    BODY;
    ADVANCE;
}

আপনি এর জন্য প্রায় কোনো অভিব্যক্তি লিখতে পারেন INIT, TEST, ADVANCE, এবং BODY

মনে রাখবেন যে ++অপারেটরগুলি এবং রূপগুলি পার্শ্ব-প্রতিক্রিয়াযুক্ত অপারেটরগুলি (যদি আপনি তাদের মতো i+=1এবং পছন্দ মতো ব্যবহার না করেন তবে তাদের এড়াতে চেষ্টা করা উচিত ):

  • ++i মানে i+=1; return i
  • i++ মানে oldI=i; i+=1; return oldI

উদাহরণ:

> i=0
> [i++, i, ++i, i, i--, i, --i, i]
[0, 1, 2, 2, 2, 1, 0, 0]


5

অ্যান্ড্রু হুইটেকারের উত্তরটি সত্য, তবে আপনি যে কোনও অংশে কোনও অভিব্যক্তি ব্যবহার করতে পারেন।
শুধু মনে রাখবেন দ্বিতীয় (মধ্যম) ভাবটি মূল্যায়ন করা উচিত যাতে এটি বুলিয়ান trueবা সাথে তুলনা করা যায় false

যখন আমি একটি forলুপ ব্যবহার করি, তখন আমি এটি হিসাবে মনে করি

for (var i = 0; i < 10; ++i) {
    /* expression */
}

হিসাবে হিসাবে

var i = 0;
while( i < 10 ) {
    /* expression */
    ++i;
}

1

আপনি অবশ্যই পারেন। অন্যেরা আপনার যা করা দরকার তা সঠিকভাবে উল্লেখ করেছেন i += 3। আপনি যা পোস্ট করেছেন তা আপনি করতে পারবেন না কারণ আপনি এখানে যা করছেন তা যুক্ত করছে i + 3কিন্তু ফলাফলটিকে আর কখনই বরাদ্দ করবে না ii++কেবল একটি সংক্ষিপ্ত হাতের জন্য i = i + 1, একইভাবে i +=3একটি শর্টহ্যান্ড i = i + 3


1
for (var i = 0; i < myVar.length; i+=3) {
   //every three
}

অতিরিক্ত

Operator   Example    Same As
  ++       X ++        x = x + 1
  --       X --        x = x - 1
  +=       x += y      x = x + y
  -=       x -= y      x = x - y
  *=       x *= y      x = x * y
  /=       x /= y      x = x / y
  %=       x %= y      x = x % y

-1

টার্নারি অপারেটরের শেষ অংশটি আপনাকে বর্ধিত পদক্ষেপের আকার নির্দিষ্ট করতে দেয়। উদাহরণস্বরূপ, i ++ এর অর্থ হল 1. বৃদ্ধি 1। I + = 2 i = i + 2, ... ইত্যাদি সমান is উদাহরণ:

let val= [];

for (let i = 0; i < 9; i+=2) {
  val = val + i+",";
}


console.log(val);

প্রত্যাশিত ফলাফল: "2,4,6,8"

'আমি' পছন্দসই ধাপের আকারের উপর নির্ভর করে যে কোনও ভাসমান পয়েন্ট বা পুরো সংখ্যা হতে পারে।

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