লুপটিতে কী ভুল হয়েছে তা আপনি শুনতে চান:
for (i = 0; i < arguments.length; i++){
logicalAnd = arguments[i] && arguments[i+1];
}
- এই লুপটি
&&
শেষ দুটি আইটেমের মুখোমুখি হয়। আদর্শ ক্ষেত্রে এটি &&
অ্যারের শেষ দুটি উপাদান একসাথে করবে (যা ইতিমধ্যে আপনার যা প্রয়োজন তা নয়)
- লুপের শেষে এটি শীর্ষে
i=arguments.length-1
এটি অ্যারের শেষ উপাদানটি যাচাই করবে এবং i+1
এটি সর্বশেষটির "পরে" উপাদানটি হবে যা এটি undefined
। যৌক্তিক সম্পর্কের ক্ষেত্রে, এটি বিবেচনা করা হয় false
, তবে &&
এই ক্ষেত্রে মানটি নিজেই উত্পাদন করে, এবং এই কারণেই ফাংশনটি undefined
সর্বদা ফিরে আসে (এই প্রশ্নটিতে এটি উল্লেখ করা যেতে পারে)।
ডক্স
expr1 && expr2
: যদি expr1
রূপান্তর করা যায় true
, ফেরত expr2
; অন্যথায়, ফিরে আসে expr1
।
arr=[true];
console.log("your case:",arr[0] && arr[1]);
console.log("1 && 2:", 1 && 2);
পরিবর্তে, আপনার
logicalAnd
একটি সংগ্রহকারী হিসাবে ব্যবহার করা উচিত , যা
&&
পূর্ববর্তী সমস্ত উপাদানগুলি- ফলাফলের ফলাফল সংগ্রহ করে এবং আপনি যে কৌশলটি ব্যবহার করতে পারেন তা যদি কোনও আংশিক ফলাফল
&&
হয়
false
, তবে বাকি উপাদানগুলি কী তা বিবেচনা করে না, শেষের ফলাফল হতে চলেছে
false
, যাতে লুপটি তত্ক্ষণাত বন্ধ হয়ে যায়:
function andMultipleExpr(){
let logicalAnd = arguments[0] || false;
for (let i = 1; i < arguments.length && logicalAnd; i++){
logicalAnd = logicalAnd && arguments[i];
}
return logicalAnd;
}
console.log("():",andMultipleExpr());
console.log("(false):",andMultipleExpr(false));
console.log("(true):",andMultipleExpr(true));
console.log("(true,true):",andMultipleExpr(true,true));
console.log("(true, true, false, false):",andMultipleExpr(true, true, false, false));
এবং তারপরে আপনি এটি আর্চির উত্তরের দিকে অনুকূল করতে পারেন : &&
আইটেমগুলির ফলাফল true
যদি সমস্ত আইটেম হয় true
এবং &&
ফলাফল গণনা করার জন্য আপনাকে কোনও একক ক্রিয়াকলাপ চালাতে হয় না :
function andMultipleExpr(){
if(arguments.length===0){
return false;
}
for (let i = 0; i < arguments.length; i++){
if(!arguments[i]){
return false;
}
}
return true;
}
console.log("():",andMultipleExpr());
console.log("(false):",andMultipleExpr(false));
console.log("(true):",andMultipleExpr(true));
console.log("(true,true):",andMultipleExpr(true,true));
console.log("(true, true, false, false):",andMultipleExpr(true, true, false, false));
(উপরের স্নিপেটগুলিতে আমি false
একটি খালি যুক্তি তালিকার জন্য প্রস্তুত করেছিলাম ))