ในสตริงเช่น 'Zhaochucichuzuiduodezifu' เราต้องการค้นหาตัวละครที่ปรากฏมากที่สุด บทความนี้จะอธิบายวิธีการและแนวคิดโดยละเอียด
แรกแนะนำสองวิธีในสองวัตถุสตริง : indexof () และ charat () วิธีการ
วิธีการดัชนี () แนะนำการกลับมาของการเกิดขึ้นครั้งแรกของค่าสตริงที่ระบุในสตริง
วิธีการ charat () แนะนำอักขระส่งคืนที่ตำแหน่งที่ระบุ
ก่อนอื่นทำการทดสอบเล็ก ๆ น้อย ๆ เพื่อค้นหาว่า 'ฉัน' แต่ละคนจะปรากฏในสตริง 'woainixiaoli'
<script> var arr = 'woainixiaoli'; var index = -1; // กำหนดดัชนีตัวแปรเพื่อควบคุมค่าดัชนี // เมื่อไม่พบนั่นคือค่าของดัชนีของ () คือ -1, ลูปสิ้นสุดลง {index = arr.indexof ("i", ดัชนี + 1); // ใช้ดัชนีพารามิเตอร์ที่สอง+1 เพื่อควบคุมการค้นหาแต่ละครั้งเริ่มต้นจากตำแหน่งดัชนีถัดไปของอักขระ A เมื่อพบการค้นหาล่าสุดถ้า (ดัชนี! = -1) {// ไอคอนอักขระ iconsole.log (ดัชนี); // ตำแหน่งของเอาต์พุต a}} ในขณะที่ (ดัชนี! = -1); </script>หลังจากเรียกใช้รหัสด้านบนเอาต์พุตคอนโซล
ไปที่หัวข้อและค้นหาอักขระมากที่สุดในสตริง 'Zhaochucichuzuiduodezifu'
วิธีที่ 1: ใช้อาร์เรย์ (มีข้อเสียเมื่อมีอักขระมากกว่าหนึ่งตัวที่ปรากฏขึ้นสามารถพบได้เพียงตัวเดียว)
<script> var str = "zhaochucichuzuiduodezifu"; var arr = []; // กำหนดอาร์เรย์ใหม่ // วนผ่านสตริงสำหรับ (var i = 0, ความยาว = str.length; i <length; i ++) {var index = -1; var j = 0; // {j ++;}} ในขณะที่ (ดัชนี! = -1); arr [j] = str [i]; // กำหนดอักขระในสตริง str ให้กับข้อมูลที่มี array arr ดัชนีเป็น j หลังจากลูปหลายครั้งการมอบหมายซ้ำจะเกิดขึ้น // การมอบหมายที่ตามมาจะเขียนทับการมอบหมายก่อนหน้านี้ แต่จะไม่ส่งผลกระทบต่อการค้นหาของเราที่มีอักขระมากที่สุด} console.log (arr); console.log ("ตัวละครมากที่สุดคือ" + arr [arr.length - 1]); console.log ("จำนวนครั้งคือ" + (arr.length - 1));ผลลัพธ์ของรหัสข้างต้นที่กำลังรันจากนั้นส่งออกคอนโซลมีดังนี้:
นอกจากนี้ยังสามารถเห็นได้จาก array array output ว่าวิธีนี้จะเขียนทับอักขระด้วยจำนวนครั้งเท่ากันและสามารถแสดงได้เพียงอย่างเดียว หากอักขระ 2 ตัวปรากฏขึ้นด้วยจำนวนครั้งสูงสุดเท่ากันวิธีนี้สามารถรับได้เท่านั้น ขึ้นอยู่กับสิ่งนี้โปรดดูวิธีถัดไปเพื่อแก้ปัญหาด้วยวัตถุ
วิธีที่ 2: ใช้วัตถุ (แนะนำ)
<script> var str = "zhaochucichuzuiduodezifu"; var o = {}; สำหรับ (var i = 0, length = str.length; i <length; i ++) {// var char = str [i]; var char = str.charat (i) o [char] ++; // เพิ่ม 1} else {o [char] = 1; // หากเกิดขึ้นครั้งแรกจำนวนของเหตุการณ์จะถูกทำเครื่องหมายเป็น 1}} console.log (O); // เอาต์พุตเป็นวัตถุที่สมบูรณ์การบันทึกแต่ละอักขระและหมายเลขเหตุการณ์ที่เกิดขึ้น // การเดินทางผ่านวัตถุการค้นหาอักขระที่มีเหตุการณ์มากที่สุดและจำนวนเหตุการณ์ที่เกิดขึ้น var max = 0; var maxchar = null; สำหรับ (var key ใน o) {ถ้า (max <o [key]) {max = o [key]; // maxchar ที่มีจำนวนมากที่สุดของเหตุการณ์ maxchar = key; // อักขระที่เกี่ยวข้องคือคีย์ปัจจุบัน}} console.log ("เหตุการณ์ที่เกิดขึ้นมากที่สุดคือ" + maxchar); console.log ("จำนวนเหตุการณ์ที่เกิดขึ้นคือ" + สูงสุด); </script>ผลลัพธ์ของรหัสข้างต้นที่กำลังรันจากนั้นส่งออกคอนโซลมีดังนี้:
วิธีนี้แก้ปัญหาของวิธีการหนึ่งและเราสามารถบันทึกจำนวนเหตุการณ์ที่เกิดขึ้นของแต่ละอักขระได้อย่างชัดเจน เมื่อมีสองอักขระที่มีจำนวนเท่ากันพวกเขาสามารถเห็นได้อย่างชัดเจนในวัตถุ
อย่างไรก็ตามยังมีข้อบกพร่อง คุณไม่สามารถส่งออกอักขระได้โดยตรงด้วยจำนวนครั้งสูงสุดในเวลาเดียวกัน สิ่งนี้ต้องใช้เงื่อนไขการตัดสินเพิ่มเติม รหัสที่สมบูรณ์แบบมีดังนี้ o (∩_∩) o
<script> var str = "nininihaoa"; var o = {}; สำหรับ (var i = 0, length = str.length; i <length; i ++) {var char = str.charat (i); ถ้า (o [char]) {o [char] ++; // เพิ่ม 1} else {o [char] = 1; // หากบันทึกเหตุการณ์ครั้งแรกจำนวนครั้งจะถูกบันทึกเป็น 1}} console.log (O); // เอาต์พุตเป็นวัตถุที่สมบูรณ์การบันทึกแต่ละอักขระและหมายเลขที่เกิดขึ้น // การเดินทางผ่านวัตถุและค้นหาอักขระที่มีเหตุการณ์มากที่สุด var max = 0; สำหรับ (var key ใน o) {ถ้า (สูงสุด <o [key]) {max = o [key]; // อันที่มีจำนวนมากที่สุดของสูงสุดที่เก็บไว้เสมอ}} สำหรับ (var key ใน o) {ถ้า (o [key] == สูงสุด) {//console.log(key);ผลลัพธ์มีดังนี้:
ด้านบนเป็นอักขระที่ตัวแก้ไขแนะนำให้คุณทราบว่าอักขระที่พบบ่อยที่สุดจะปรากฏในสตริง JS ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!