この記事では、javascript に関する関連知識を提供します。主に、JavaScript で一般的に使用される配列の 7 つの反復処理方法に関する関連問題を紹介します。一緒に見てみましょう。お役に立てば幸いです。みんな助かります。
[関連する推奨事項: JavaScript ビデオ チュートリアル 、Web フロントエンド ]
1.map( ) メソッド
1.1 アプリケーション シナリオ: 特定のルールを使用して新しい配列をマップします (配列内の各要素を走査し、各要素に対応する処理を実行し、新しい配列を返します)
例:配列の各要素を 1
let arr = [10, 20, 30, 40, 50] //item数组每一项的值,index数组的下标 let newArr = arr.map((item, index) => { return item + 1 }) console.log(newArr)//[11, 21, 31, 41, 51]
1.2 に変更します。 注:
(1). コールバック関数の実行回数は、配列の長さになります
(2).map 関数 返される新しい配列の長さは、元の配列
(3) の長さと同じです。コールバック関数で返す必要があります。返されるのは、現在の配列の値です走査された要素。返さない場合、新しい配列の各要素は未定義になります
2.forEach() メソッド
2.1 アプリケーション シナリオ: 配列を走査するために使用され、別の方法と同等です。 for ループの記述
#let arr = [10, 20, 30, 40, 50] arr.forEach((item, index) => { console.log(`下标为${index}的元素是${item}`) }) //控制台打印结果 //下标为0的元素是10 //下标为1的元素是20 //下标为2的元素是30 //下标为3的元素是40 //下标为4的元素是50
2.2 注:
(1). コールバック関数の実行数は、配列の長さと同じです
(2) . forEach 関数には戻り値がありません
(3). コールバック関数は返す必要はありません。手動で返したとしても、ループは終了しません
3.filter () メソッド
3.1 アプリケーション シナリオ: 条件を満たす配列内の要素をフィルターし、フィルターされた新しい配列を返すために使用されます
例: find 配列内の偶数を取得します
let arr = [1, 2, 3, 4, 5, 6, 7, 8] let newArr = arr.filter((item, index) => { //return一个布尔值 return item % 2 == 0 }) console.log(newArr)//[2,4,6,8]
3.2 注:
(1)。コールバック関数の実行数は、配列の長さと同じです。
(2)。フィルタ関数 長さが元の配列
(3) の長さと等しくありません。コールバック関数はブール値を返す必要があります。戻り値が true の場合、現在トラバースされている要素が新しい配列に追加されます戻り値が false の場合、新しい array
4.some() メソッド
4.1 アプリケーション シナリオ: を満たす要素があるかどうかを判断するために使用されます。配列内の条件
例: 配列内に 100 より大きい数値があるかどうかを判断します (存在する場合、戻り値は true、存在しない場合、戻り値は false)
let arr = [10, 50, 150, 200, 60, 30] let bol = arr.some((item, index) => { return item > 100 }) console.log(bol)//true
4.2 注:
(1). コールバック関数の実行回数が配列長と等しくない
(2). 一部の関数の戻り値関数はブール値です
(3)。コールバック関数はブール型の値を返してトラバーサルを終了します。戻り値が true の場合、トラバーサルは終了し、関数の戻り値が false の場合。戻り値が false、トラバーサルが続行、および一部の関数の戻り値が false
#5.every() メソッド5.1 アプリケーション シナリオ: 配列内のすべての要素が存在するかどうかを判断するために使用されます。条件を満たしている (アイデアの切り替え) some() メソッドと同様の機能があり、比較して理解することができます 例: 配列内のすべての要素が 100 より大きいかどうかを判断します (両方とも 100 より大きい) 1 つの要素が 100 未満である限り、戻り値は true、戻り値は false)let arr = [10, 50, 150, 200, 60, 30] let bol = arr.every((item, index) => { return item > 100 }) console.log(bol)//false5.2 注: (1). コールバックの実行数関数は配列の長さと等しくありません (2)。すべての関数の戻り値はブール値 (3) です。コールバック関数はブール型の値を返して終了しますトラバーサル。戻り値が true の場合、トラバーサルは続行され、すべての関数の戻り値が true になります。戻り値が false の場合、引き続き終了し、すべての関数の戻り値が false6.findIndex() メソッド 6.1 アプリケーション シナリオ: オブジェクト型の配列内の要素に適しており、従来の for ループよりも効率的です6.2 関数: 位置を取得します (添え字) ) 条件を満たす最初の要素の
let arr = [ { name: '张三', age: 20 }, { name: '李四', age: 30 }, { name: '王五', age: 25 }, { name: '赵六', age: 33 }, { name: '小七', age: 10 }, ]; let i=arr.findIndex((item,index)=>{ return item.age>30 }) //打印的i为符合条件的第一个元素下标 console.log(i)//36.2 注: (1). return の値が true の場合、トラバーサルは終了し、findIndex メソッドの戻り値は次のようになります。現在のインデックス値; return の値が false の場合、走査は続行されます。配列全体が走査された場合、それでも true が返されない場合、findIndex メソッドの戻り値は -17 です。 reduce() メソッド7.1 アプリケーション シナリオ: 配列の合計/平均/最大値/最小値
7.2 関数: 配列要素を走査し、各要素に対してコールバック関数を実行します。
//数组求和 let arr = [10, 20, 30, 40] //sum:初始值,默认为数组的第一个元素 //item:数组的每一个元素,默认为数组的第二个元素 let getSum = arr.reduce((sum, item) => { //这里必须要return,相当于把本次计算得结果赋值给下一次得sum : sum = sum + item; return sum + item }) console.log(getSum)//1007.2 注: (1). 空の配列エラーを避けるために、初期値を与えることが最善です.
//数组求和 let arr = [10, 20, 30, 40] //加了初始值0之后,此时sum开始默认为0,item则默认为数组的第一个元素 let getSum = arr.reduce((sum, item) => { //这里必须要return,相当于把本次计算得结果赋值给下一次得sum : sum = sum + item; return sum + item },0) console.log(getSum)//100 //数组求最大值 let max = arr.reduce((sum, item) => { return Math.max(sum, item) }, 0) console.log(max)//40ここでの特別な注意は、各ラウンドの合計値が戻り値であることです。前回のラウンドの8.概要
reduce(function(sum ,value,index,arr){}) method
reduce() メソッドは関数をアキュムレータとして受け取ります。配列内の各値は (左から右に) 減少し始め、最終的に 1 つの値にカウントされます。 reduce() は、関数を構成するための高階関数として使用できます。 注:reduce() は空の配列に対してコールバック関数を実行しません。参数 | 详情 |
---|---|
sum第一个参数 | 第一次为数组的第一个数组元素的值(下标为0),依次往后是返回计算结果的值 |
value 第二个参数 | 开始为数组元素第二个的值(下标为1),依次往后循环 |
index第三个参数 | 依次为数组元素的下标 |
arr第四个参数 | 为数组的整体 |
initialValue | 为第一参数的默认值,设置的话,第一个参数的默认值为initialValue的值,则 第二个参数则将使用数组第一个元素(下标为0 ),没有设置的话,第一个参数将使用数组第一个元素,而 第二个参数 将使用数组第二个元素。 |
function sum(arr){ return arr.reduce(function(sum,value,index,arr){ console.log(sum); console.log(value); console.log(index); console.log("~~") console.log(arr) return sum+y },initialValue)}console.log(sum([1,2,3,4,5]))
arr.every(function(value,index,arr){})
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。 every() 方法使用指定函数检测数组中的所有元素: 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。 如果所有元素都满足条件,则返回 true。 注意: every() 不会对空数组进行检测。 注意: every() 不会改变原始数组。
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.every(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
arr.some(function(value,index,arr){})
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。 some() 方法会依次执行数组的每个元素: 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。 如果没有满足条件的元素,则返回false。 注意: some() 不会对空数组进行检测。 注意: some() 不会改变原始数组。
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.some(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
arr.filter(function(value,index,arr){})
filter()方法过滤查找全部,对数组元素进行判断,满足条件的会组成一个新的数组返回 注意:如果都不符合条件,会得到一个空数组 注意:如果所有元素都符合条件,会得到一个包含所有元素的新数组它与原数组进行===或==比较会得到false
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.filter(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=5 })}console.log(sum([1,2,3,4,5]))
arr.map(function(value,index,arr){})
map对数组元素进行循环,有返回值,返回值会组成一个新的数组 注意:map可以处理一对一的元素映射
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
const source = [1,2,3,4]const target = source.map(n=>({id:n,label:`label${n}`}))console.log(target)
function sum(arr){ return arr.map(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
arr.forEach(function(value,index,arr){})
forEach()方法对数组元素进行循环,没有返回值和for循环的功能一样,但是不能使用break和countinue 注意:map和forEach的区别:map有返回值,forEach没有返回值
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.forEach(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
【相关推荐:javascript视频教程、web前端】
以上がJavaScript でよく使用される 7 つの配列の反復処理方法のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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