非配列オブジェクトを配列に変換する JS メソッド
この記事では主に、JS を非配列オブジェクトから配列に変換するいくつかのメソッド、つまり Array.prototype.slice.call(obj)、Array.from(obj)、[...obj]、および Object.values( obj) 必要な友人は、他のメソッドの詳細な実装方法を参照してください。皆さんのお役に立てれば幸いです。
Array.prototype.slice.call(obj)
このメソッドは、配列のようなオブジェクトを配列に変換できます。いわゆる配列のようなオブジェクトは、長さとインデックスの属性を持つオブジェクトです。返される配列の長さは、オブジェクトの length 属性の値、およびインデックスのない属性の値、または length より大きいインデックスを持つ値によって異なります
実際の実装は次のとおりです以下
let obj = { '0': 3, '1': 13, '2': 23, '3': 33, 'length': 3, 'name': 330 } let arr = Array.prototype.slice.call(obj) // [3, 13, 23]
メソッドの簡潔な記述 [].slice.call(obj)
[].slice.call(obj)
Array.from(obj)
该方法可以将类数组对象和可迭代对象转换为数组
类数组对象上文已提及,何为可迭代对象?
Array、Set、Map 和字符串都是可迭代对象(WeakMap/WeakSet 并不是可迭代对象)
字符串变成了可迭代对象,解决了编码的问题
这些对象都有默认的迭代器,即具有 Symbol.iterator 属性
可以用 for of 循环
所有通过生成器创建的迭代器都是可迭代对象
document.getElementsByTagName("p")
返回的是可迭代对象但不是一个数组Array.isArray(document.getElementsByTagName('p'))
返回 false
通过生成器创建可迭代对象
let obj = { '0': 3, '1': 13, '2': 23, '3': 33 } function *createIterator(obj){ for(let value in obj){ yield obj[value] } } let iterator = createIterator(obj) let arr = Array.from(iterator) // [3, 13, 23, 33]
改造对象本身,使其成为可迭代对象
默认情况下,开发者定义的对象都是不可迭代对象,但如果给 Symbol.iterator
属性添加一个生成器,则可以将其变为可迭代对象
let obj = { '0': 3, '1': 13, '2': 23, '3': 33 } obj[Symbol.iterator] = function* () { for(let value in this){ yield this[value] } } let arr = Array.from(obj) // [3, 13, 23, 33]
判断对象是否为可迭代对象的方法
typeof obj[Symbol.iterator] === 'function'
一点延伸 for of 与 forEach 与 for in
for of 用于循环可迭代对象,包括有 Array, Set, Map, 字符串
而 Array, Set, Map 都有 forEach 方法
另外,NodeList 不是 Array, Set, Map,但是一个可迭代对象,可以用 for of 遍历
此外,用 for of 循环对象时可以通过 break 提前终止,而 forEach 无法提前跳出循环
for in 遍历对象的可枚举属性,包括其原型链上的属性,且不保证顺序
若要遍历对象自身的可枚举属性,使用 hasOwnProperty()
方法来确定属性是否时对象自身属性
Object.getOwnPropertyNames(obj)
, 返回对象自身可枚举或不可枚举属性
反正已经扯远了,那就再扯远一点, Object.assign()
方法将所有可枚举属性的值从一个或多个源对象复制到目标对象
[…obj]
展开运算符可以将可迭代对象转换为数组
例如, [...'obj']
返回 ["o", "b", "j"]
字符串去重
[...new Set('objobj')]
Object.values(obj)
默认情况下,开发者定义的对象都是不可迭代对象,但提供了返回迭代器的方法
entries()
values()
keys()
通过使用这些方法,可以返回相关的数组
与类数组对象需要对象有 length 值不同,Object.values(obj)
返回对象自身可枚举属性值的集合
let obj = { '0': 3, '1': 13, '2': 23, '3': 33 } let arr = Object.values(obj) // [3, 13, 23, 33]
字符串与数组的关系
在很大程度上,可以将字符串看成字符串数组,
都有 length 属性
都有 concat()
/ indexOf()
/ includes()
/ slice()
方法
不过值得注意的是, string 上没有方法可以原地修改它自身的内容,都是返回新的 string
string 还有个 repeat()
🎜このメソッドは、配列のようなオブジェクトと反復可能なオブジェクトを配列🎜🎜配列のようなオブジェクトについては上で説明しましたが、反復可能なオブジェクトとは何ですか? 🎜
- 🎜Array、Set、Map、String はすべて反復可能なオブジェクトです (WeakMap/WeakSet は反復可能なオブジェクトではありません) 🎜
- 🎜Character 文字列は次のようになります。エンコードの問題を解決する反復可能なオブジェクト🎜
- 🎜これらのオブジェクトにはデフォルトの反復子、つまり Symbol.iterator 属性があります🎜
- 🎜ループの for を使用できます🎜
- 🎜ジェネレーターを通じて作成されたすべての反復子は反復可能オブジェクトです🎜
- 🎜
document.getElementsByTagName("p")
は Iterable オブジェクトを返しますが、配列は返しません🎜Array.isArray(document.getElementsByTagName('p'))
Return false🎜
🎜🎜rrreee🎜を変換しますオブジェクト自体を反復可能なオブジェクトにします🎜🎜 デフォルトでは、開発者によって定義されたオブジェクトは反復不可能なオブジェクトですが、Symbol.iterator
を指定すると、属性にジェネレーターを追加すると、それを反復可能なオブジェクトに変換します🎜
🎜🎜rrreee🎜オブジェクトが反復可能なオブジェクトかどうかを判断するメソッド🎜
🎜🎜rrreee🎜 for of と forEach とを少し拡張したものfor in🎜🎜for of は、Array、Set、Map、文字列などの反復可能なオブジェクトをループするために使用されます🎜🎜そして、Array、Set、Map にはすべて forEach メソッドがあります🎜🎜さらに、NodeList は Array、Set、Map ではありませんが、反復可能なオブジェクトは、for of で走査できます🎜🎜さらに、for of を使用してオブジェクトをループする場合、break によって早期に終了できますが、forEach は事前にループから抜け出すことはできません🎜🎜for in は列挙可能なプロパティを走査しますプロトタイプ チェーン上のプロパティを含む、オブジェクトの順序は保証されません🎜🎜 オブジェクト自体の列挙可能なプロパティを走査するには、 hasOwnProperty()
メソッドを使用して、そのプロパティがオブジェクトのプロパティであるかどうかを判断します独自のプロパティ🎜🎜Object .getOwnPropertyNames(obj)
は、オブジェクト自体の列挙可能または列挙不可能なプロパティを返します🎜🎜 とにかく、行き過ぎたので、もう少し先に進みましょう。 >Object.assign() メソッドは、すべての列挙可能なプロパティの値が 1 つ以上のソース オブジェクトからターゲット オブジェクトにコピーされます 🎜🎜🎜🎜 […obj] 🎜🎜🎜🎜🎜 スプレッド演算子は変換できます反復可能なオブジェクトを配列に変換します🎜🎜 たとえば、 [ ...'obj']
Return ["o", "b", "j"]
🎜🎜String deduplication🎜🎜[...new Set( 'objobj')]
🎜🎜🎜🎜Object.values(obj)🎜🎜🎜🎜🎜 デフォルトでは、開発者によって定義されたオブジェクトは反復不可能ですオブジェクトですが、反復子を返すメソッドが提供されています🎜
- 🎜entries()🎜
- 🎜values()🎜
- 🎜 key()🎜
Object.values(obj) は、オブジェクト自体の列挙可能なプロパティ値のコレクションを返します🎜<p class="jb51code">🎜🎜rrreee🎜🎜文字列と配列の関係🎜🎜🎜🎜大部分において、文字列は文字列配列と見なされ、🎜🎜すべてに length 属性があります🎜🎜すべてに <code> concat()
/ indexOf()
/ includes()
/ slice() メソッド 🎜🎜 ただし、string には独自のコンテンツをその場で変更できるメソッドが存在しないことに注意してください。これらはすべて新しい文字列を返します🎜🎜 以上が非配列オブジェクトを配列に変換する JS メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









トマト ノベルは非常に人気のある小説閲覧ソフトウェアです。トマト ノベルでは、新しい小説や漫画を読むことができます。どの小説も漫画もとても面白いです。小説を書きたい友達もたくさんいます。お小遣いを稼いで、小説の内容を編集することもできます。 「テキストに文章を書きたいです。それで、小説はどうやって書くのですか?友達は知らないので、一緒にこのサイトに行きましょう。小説の書き方の入門を少し見てみましょう。」 Tomato Novels を使用して小説を書く方法に関するチュートリアルを共有します。 1. まず、携帯電話で Tomato Free Novels アプリを開き、パーソナル センター - ライター センターをクリックします。 2. Tomato Writer Assistant ページに移動し、次の場所で [新しい本の作成] をクリックします。小説の終わり

Colorful マザーボードは中国国内市場で高い人気と市場シェアを誇っていますが、Colorful マザーボードのユーザーの中には、設定のために BIOS を入力する方法がまだ分からない人もいます。この状況に対応して、編集者はカラフルなマザーボード BIOS に入る 2 つの方法を特別に提供しました。ぜひ試してみてください。方法 1: U ディスク起動ショートカット キーを使用して、U ディスク インストール システムに直接入ります。ワンクリックで U ディスクを起動する Colorful マザーボードのショートカット キーは ESC または F11 です。まず、Black Shark インストール マスターを使用して、Black Shark インストール マスターを作成します。 Shark U ディスク起動ディスクを選択し、コンピュータの電源を入れます。起動画面が表示されたら、キーボードの ESC キーまたは F11 キーを押し続けて、起動項目を順次選択するウィンドウに入ります。「USB」の場所にカーソルを移動します。 」と表示され、その後

残念ながら、WeChat は広く使用されているソーシャル ソフトウェアであり、何らかの理由で特定の連絡先を誤って削除してしまうことがよくあります。ユーザーがこの問題を解決できるように、この記事では、削除された連絡先を簡単な方法で取得する方法を紹介します。 1. WeChat の連絡先削除メカニズムを理解します。これにより、削除された連絡先を取得できるようになります。WeChat の連絡先削除メカニズムでは、連絡先がアドレス帳から削除されますが、完全には削除されません。 2. WeChat の組み込みの「連絡先帳復元」機能を使用します。WeChat には、この機能を通じて以前に削除した連絡先をすばやく復元できる「連絡先帳復元」機能が用意されています。 3. WeChat 設定ページに入り、右下隅をクリックし、WeChat アプリケーション「Me」を開き、右上隅にある設定アイコンをクリックして設定ページに入ります。

Win11 管理者権限の取得方法のまとめ. Windows 11 オペレーティング システムでは、管理者権限は、ユーザーがシステム上でさまざまな操作を実行できるようにする非常に重要な権限の 1 つです。ソフトウェアのインストールやシステム設定の変更など、一部の操作を完了するために管理者権限の取得が必要になる場合があります。以下にWin11の管理者権限を取得する方法をまとめましたので、お役に立てれば幸いです。 1. ショートカット キーを使用する Windows 11 システムでは、ショートカット キーを使用してコマンド プロンプトをすばやく開くことができます。

テクノロジーの発展に伴い、モバイルゲームは人々の生活に欠かせないものになりました。かわいいドラゴンエッグの画像と面白い孵化過程で多くのプレイヤーの注目を集めており、その中でも注目を集めているゲームの一つがモバイル版ドラゴンエッグです。プレイヤーがゲーム内で自分のドラゴンをより適切に育成し成長させることができるように、この記事ではモバイル版でドラゴンの卵を孵化させる方法を紹介します。 1. 適切な種類のドラゴン エッグを選択する プレイヤーは、ゲーム内で提供されるさまざまな種類のドラゴン エッグの属性と能力に基づいて、自分に適したドラゴン エッグの種類を慎重に選択する必要があります。 2. 孵化機のレベルをアップグレードします。プレイヤーはタスクを完了し、小道具を収集することで孵化機のレベルを向上させる必要があります。孵化機のレベルは孵化速度と孵化成功率を決定します。 3. プレイヤーはゲームに参加する必要がある孵化に必要なリソースを収集します。

今日の社会において、携帯電話は私たちの生活に欠かせないものとなっています。私たちの日常のコミュニケーション、仕事、生活のための重要なツールとして、WeChat はよく使用されます。ただし、異なるトランザクションを処理する場合は 2 つの WeChat アカウントを分離する必要がある場合があり、そのためには携帯電話が 2 つの WeChat アカウントへの同時ログインをサポートする必要があります。有名な国内ブランドとして、ファーウェイの携帯電話は多くの人に使用されていますが、ファーウェイの携帯電話で 2 つの WeChat アカウントを開設する方法は何でしょうか?このメソッドの秘密を明らかにしましょう。まず、Huawei 携帯電話で 2 つの WeChat アカウントを同時に使用する必要があります。最も簡単な方法は次のとおりです。

携帯電話が人々の日常生活において重要なツールになるにつれて、フォント サイズの設定は重要なパーソナライゼーション要件になりました。さまざまなユーザーのニーズを満たすために、この記事では、簡単な操作で携帯電話の使用体験を向上させ、携帯電話のフォントサイズを調整する方法を紹介します。携帯電話のフォント サイズを調整する必要があるのはなぜですか - フォント サイズを調整すると、テキストがより鮮明で読みやすくなります - さまざまな年齢のユーザーの読書ニーズに適しています - フォント サイズを使用すると、視力の悪いユーザーにとって便利です携帯電話システムの設定機能 - システム設定インターフェイスに入る方法 - 設定インターフェイスで「表示」オプションを見つけて入力します。 - 「フォント サイズ」オプションを見つけて、サードパーティでフォント サイズを調整します。アプリケーション - フォント サイズの調整をサポートするアプリケーションをダウンロードしてインストールします - アプリケーションを開いて、関連する設定インターフェイスに入ります - 個人に応じて

Oracleバージョンのクエリ方法を詳しく解説 Oracleは、世界で最も人気のあるリレーショナルデータベース管理システムの1つで、豊富な機能と強力なパフォーマンスを提供し、企業で広く使用されています。データベースの管理と開発のプロセスでは、Oracle データベースのバージョンを理解することが非常に重要です。この記事では、Oracle データベースのバージョン情報をクエリする方法と具体的なコード例を詳しく紹介します。単純な SQL ステートメントを実行して、Oracle データベース内の SQL ステートメントのデータベース バージョンをクエリします。
