การใช้ TypeScript วนลูปผ่านสตริงพร้อมดัชนีและค่า
ฉันต้องการวนลูปผ่านสตริงและฉันต้องการมีทั้งดัชนีและตัวอักษรที่ดัชนีนี้ ฉันรู้ว่าฉันสามารถใช้วนลูป for ธรรมดาได้สำหรับเรื่องนี้ แต่ฉันคิดว่าบางฟีเจอร์ใหม่ของ Javascript/Typescript อาจดูเรียบง่ายกว่า ดังนั้นฉันจึงลองแบบนี้:
for (const [i, character] of Object.entries('Hello Stackoverflow')) {
console.log(i);
console.log(typeof(i));
console.log(character);
}
น่าทึ่งที่ว่านี่ใช้ได้ อย่างไรก็ตามแม้ว่า i จะนับขึ้น แต่ก็เป็นสตริง ดังนั้นตัวอย่างเช่น นี่จะไม่ทำงาน:
'other string'.charAt(i)
ฉันยังใหม่กับ Typescript ดังนั้นคำถามของฉันคือ:
- ทำไม i ถึงเป็นสตริงและไม่ใช่ตัวเลข?
- มีวิธีที่ง่ายขึ้นหรือสวยงามขึ้นในการทำสิ่งนี้หรือไม่?
คำตอบ #1
วิธีที่ปลอดภัยสำหรับยูนิโคดคือการแยกเป็นตัวอักษรโดยใช้ไวยากรณ์การกระจาย:
const chars = [...text];
แล้วคุณทำการวนซ้ำโดยใช้ Array.prototype.forEach ที่ดีแบบเก่า
chars.forEach((c, i) => console.log(c, i));
คำตอบ #2
ทำไม i ถึงเป็นสตริงและไม่ใช่ตัวเลข?
เพราะว่า Object.entries() จะส่งค่าคู่คีย์-ค่าและมีวัตถุประสงค์ให้ใช้กับอ็อบเจ็กต์ ซึ่งคีย์แน่นอนว่าจะต้องเป็นสตริง
มีวิธีที่ง่ายขึ้นหรือสวยงามขึ้นในการทำสิ่งนี้หรือไม่?
เพียงแค่ลูป for แบบง่าย ๆ พร้อมกับ charAt(i) ก็สามารถทำได้:
const text = 'Hello StackOverflow';
for (let i = 0; i < text.length; i++) {
const character = text.charAt(i);
console.log(i, character);
}
