質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

288閲覧

[Javascript] 要素数2の配列にshiftやpopを使うと配列ではなく要素だけが生成される

penpineapple

総合スコア2

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/08/15 08:50

質問内容

Javascriptの配列についての質問です。
2つの要素を持っている配列にshiftpopを使うと配列ではなく要素だけが生成されるのですが、
これはshiftやpopの仕様でしょうか。
以下のサイトを確認しましたがこのような挙動についての説明はなかったです。
JavaScript Array shift() Method

Return Value: Any type*, representing the removed array item. *An array item can be a string, a number, an array, a boolean, or any other object types that are allowed in an array.


コード

shiftやpopで配列の要素を1つにすると配列ではなく要素だけが生成されます。

Javascript

1let array = ["apple", "peache"] 2console.log(toString.call(array)) //[object Array] 3 4let subarray1 = array.shift() 5console.log(subarray1) //apple 6console.log(toString.call(subarray1)) //[object String] 7 8let subarray2 = array.pop() 9console.log(subarray2) //peache 10console.log(toString.call(subarray2)) //[object String]

paiza.ioで実行しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

「要素だけがが生成される」が「戻り値が削除された要素である」という意味であれば、そういう風にDefinition and Usage に書いてあります。

Note: The return value of the shift method is the removed item.

投稿2020/08/15 08:57

otn

総合スコア84557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

penpineapple

2020/08/15 09:10

回答ありがとうございます。 戻り値は削除された要素なんですね。 元の配列は不変で、要素が削除された配列が戻り値で出力されるものだと勘違いしていました。 リファレンスをちゃんと読み込めていなかったようです。。。
guest

0

ベストアンサー

別ドキュメントではありますが、

Array.prototype.shift() - JavaScript | MDN

に記載されている通り、
shiftおよび、pop破壊的メソッドであるため、元の配列を変化させてしまうため、
元の配列が先頭と末尾の要素が削除された状態になります。

返り値に関しては、otnさんの回答の通りです。

投稿2020/08/15 09:08

miyabi_takatsuk

総合スコア9528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

penpineapple

2020/08/15 09:21

回答ありがとうございます。 shift、popは破壊的メソッドなんですね。 非破壊のメソッドだと思い込んでいたため、戻り値の挙動で少し混乱していました。 参考のURL分かりやすかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問