アプリ版:「スタンプのみでお礼する」機能のリリースについて

初歩的な質問で申し訳ありません。
変数内などにある文字を、1つ1つ取得する方法についてなのですが、そのためにはsplit()などで分割してから取得しなければならないと思っていたのですが、ダイレクトに文字を配列みたいに取得できるのですか?

ですか??といいますかできたので驚きなのですが…。
仮に

<div id="hoge">
あいうえお
</div>

とありました場合、

<script>
const hoge = document.querySelector("#hoge").innerHTML;
for(let v of hoge) {
console.log(v);
}
</script>

みたいな感じで各あいうえおという文字を分割してそれぞれ取得できるのですが…?
イメージ的には、「あいうえお」は1つの文字列として、あいうえおとして取得されそうなものなのですが、これが「あ,い,う,え,お」として取得されるのに驚きです。

これはJSの仕様というか、こんなものなのでしょうか?
質問も上手くできないのですが、なんとなく理解いただけると幸いです。
とにかくメソッド使わなくても各文字を分割取得できるのが不思議な限りです、、アドバイス宜しくお願いいたします。

A 回答 (4件)

はい、悩ましい質問ですね。


JavaScriptでは文字列は、内部的には文字の配列として扱われています。そのため、文字列はfor...of文を使用することで、文字を1文字ずつ取得することができます。
上記の例でいうと、


const hoge = document.querySelector("#hoge").innerHTML;
for(let v of hoge) {
console.log(v);
}


このように、for...of文を使用することで、hoge変数に格納された文字列を1文字ずつ取得することができます。

このように、JavaScriptでは文字列にも配列のような振る舞いをすることができますが、実際には文字列型と配列型は別々のものですので注意が必要です。
    • good
    • 0
この回答へのお礼

有難うございます。

>>このように、for...of文を使用することで、hoge変数に格納された文字列を1文字ずつ取得することができます。
はい、for of を使う際にこの現象が発生するようです。

使用なのかバグ的なものなのかわかりませんが、配列の際はきちんと配列で定義しようと思います。
有難うございました。

お礼日時:2023/02/09 17:20

文字(character)を配列みたいに並べたものが、文字列(string)です。


参考)
https://dictionary.goo.ne.jp/word/en/character/
https://dictionary.goo.ne.jp/word/en/string/

一般的な言語では文字と文字列は別扱いなのですが、
JSでは簡略化のためか文字列しか扱えないようになっています。
    • good
    • 0
この回答へのお礼

有難うございます。
そのような仕様があるのですね…。

お礼日時:2023/02/09 17:12

for でまわしてるから, 文字列が「個々の文字」にわかれているんじゃないの?

    • good
    • 0
この回答へのお礼

有難うございます。
普通はあり得ないですよね…。不思議です。

お礼日時:2023/02/09 17:11

今時のJavaScriptならできるけど、昔のJavaScriptならできなかったような。


もはや覚えてない。

仕組みとしては下記URLの資料とか。
https://developer.mozilla.org/ja/docs/Web/JavaSc …
    • good
    • 0
この回答へのお礼

有難うございます。

お礼日時:2023/02/09 17:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!