আমি সম্ভবত:
একটি 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-offor
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;
}