আমি সম্ভবত:
একটি for-of
লুপ ব্যবহার করুন (অথবা সম্ভাব্য ফিল্টারিংয়ের সাথে সম্ভবত ম্যাপিং)
একটি লুকিং অবজেক্ট বা মানচিত্র ব্যবহার করুন
স্যুইচিং / সন্ধান করার সময় স্ট্রিংটিকে নিম্ন বা উচ্চতর আকারে তৈরি করুন (তবে স্যুইচ / লুকআপ কাজের ক্ষেত্রেও ডুপ্লিকেট এন্ট্রি):
আপনি যদি জানেন যে dna
কেবলমাত্র c
/ C
, g
/ G
, t
/ T
/, বা a
/ A
(যা আমি বুঝতে পেরেছি এটি ডিএনএ ;-) এর ক্ষেত্রে সত্য), তবে আপনি Array.from
এর ম্যাপিং বৈশিষ্ট্যটি একটি লুকিং অবজেক্ট / মানচিত্রের সাহায্যে ব্যবহার করতে পারেন :
const table = {
c: "CG",
g: "GC",
t: "TA",
a: "AT"
};
function pairDNA(dna) {
return Array.from(dna, entry => table[entry.toLowerCase()]);
}
আমি ব্যবহার করছি Array.from
কারণ এটি কোড পয়েন্টগুলিতে স্ট্রিংটি বিভক্ত করবে , কেবল কোড ইউনিট নয় (সারোগেট জোড়গুলি ভাঙবে না) এবং যদি আপনি ম্যাপিং ফাংশন সরবরাহ করেন তবে ম্যাপিং বৈশিষ্ট্য রয়েছে। (মূলত, Array.from(str, mappingFunction)
হয় [...str].map(mappingFunction)
সম্ভবত সব না যে এখানে প্রাসঙ্গিক আপনার স্ট্রিং এর সামগ্রীর জন্য প্রদত্ত, কিন্তু যদি আপনার স্ট্রিং ভাড়াটে জোড়া থাকতে পারে কোন ব্যাপার কিন্তু অন্তর্বর্তী অ্যারের ছাড়া।)।
বা একটি সহ Map
:
const table = new Map([
[c, "CG"],
[g, "GC"],
[t, "TA"],
[a, "AT"]
]);
function pairDNA(dna) {
return Array.from(dna, entry => table.get(entry.toLowerCase()));
}
আপনি যদি এই অনুমান করতে .filter
না পারেন তবে কোনও মিল নেই এমনগুলি ফিল্টার করার জন্য যুক্ত করুন :
function pairDNA(dna) {
return Array.from(dna, entry => table.get(entry.toLowerCase())).filter(Boolean);
// or if using an object: return dna.map(entry => table[entry.toLowerCase()]).filter(Boolean);
}
বা আপনি যদি অতিরিক্ত অ্যারে তৈরি করা এড়াতে চান তবে এটি (বা আপনার ) দ্বারা filter
আটকে থাকুন :for-of
for
const table = {
c: "CG",
g: "GC",
t: "TA",
a: "AT"
};
function pairDNA(dna) {
const pairs = [];
for (const entry of dna) {
const value = table[entry.toLowerCase()];
if (value) {
pairs.push(value);
}
}
return pairs;
}