লুপটিতে কী ভুল হয়েছে তা আপনি শুনতে চান:
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একটি খালি যুক্তি তালিকার জন্য প্রস্তুত করেছিলাম ))