JS 配列について知っておくべきこと: Array.from
関連する学習に関する推奨事項: JavaScript ビデオ チュートリアル
序文
昨年、文字列の replace メソッドに魔法のような使い方がたくさんあることを発見して以来、このシリーズをやりたいと思っていましたが、時間がなく、良い名前も思いつかなかったので、このようにしました。保留中。先週の金曜日に宿題をしていたときに、コメントで解決策を見つけました。それは、Array.from を使用して 1 行で解決するというもので、非常に効率的です。そこでドキュメントやブログを読み、それを理解した後、このシリーズを始める時期だと思いました。さらに、配列は開発で最も一般的に使用されるデータ構造の 1 つであり、配列を生成する方法の 1 つとして、配列から始めることは理にかなっています。シリーズ名だけで済ませましょう。
- 基本構文
定義: from() メソッドは、オブジェクトまたは length の反復可能オブジェクトを渡すために使用されます。 property 配列を返すオブジェクト。
構文: Array.from(object, mapFunction, thisValue)
説明 | |
object | 必須、配列に変換されるオブジェクト。|
mapFunction | オプション。配列内の各要素に対して呼び出される関数。|
thisValue | オプション。マッピング関数 (mapFunction) の this オブジェクト。
Array.from('hello') //["h", "e", "l", "l", "o"]
Array.from(new Set(['name','age'])) //["name", "age"]
Array.from({name:'lgc',age:25}) //[]
let map=new Map()
map.set('name','lgc')
map.set('age',25)
Array.from(map) //[["name", "lgc"],["age", 25]]
function test(){
console.log(Array.from(arguments))
}
test(1,2,3) //[1, 2, 3]复制代码
function clone(arr){
return Array.isArray(arr) ? Array.from(arr, clone):arr
}
let arrayA=[[1,2],[3,4]]
let arrayB=clone(arrayA)
arrayA===arrayB //false
arrayA[0]===arrayB[0] //false复制代码
function unique(arr){
return Array.from(new Set(arr))
}复制代码
from の定義をもう一度見てください: from() メソッドは、オブジェクトまたは
length を持つオブジェクトを渡すために使用されます。 属性 配列を返す反復可能なオブジェクト。ただ長さがあるだけ?試してみてくださいArray.from({length:2},(val,index)=>index) //[0,1]复制代码
Array.from({length:3},(val,index)=>index*10) //[0,10,20]复制代码
2 番目に、配列の初期化です。たとえば、指定した長さのオブジェクト配列を生成するとします。最初の反応は何でしたか?埋める?
let testArr=Array(3).fill({}) testArr[0]===testArr[1] //true复制代码
ここにあるすべてのオブジェクトは実際には同じです。1 つを変更すると、他のオブジェクトもそれに応じて自然に変更されますが、多くの場合、必要なものはこのようなものではありません。
let testArrb=Array.from({length:3},()=>({})) testArrb[0]===testArrb[1] //false复制代码
これら 2 つの方法は、必要に応じて使用できます。
5. from の高度な使用法上記の内容は、実際には、次の問題解決のアイデアをよりよく理解するために層ごとに構成されています。
LeetCode 質問 867:
行列
A が与えられた場合、A
の転置行列を返します。 行列の転置とは、行列の主対角を反転し、行列の行インデックスと列インデックスを交換することを指します。
例 1: 入力: [[1,2,3],[4,5,6],[7,8,9]] 出力: [[1,4,7],[2, 5,8],[3,6,9]] 例 2: 入力: [[1,2,3],[4,5,6]] 出力: [[1,4],[2,5], [3,6]]
最初の反応は、これはインデックス スワップではないということでした。とてもシンプルです。そこで、次のコードを書きました
var transpose = function(A) { let x=A.length let y=A[0].length for(let i=0;i<x;i++){ for(let j=0;j<y;j++){ if(j-i>0){ [A[i][j],A[j][i]]=[A[j][i],A[i][j]] } } } return A };复制代码
実行コード: 成功、送信: 失敗しました。くそ?エラーメッセージを見ると、例 2 の「長さと幅」が等しくない状況が無視されていることがわかりました。考え方を変えて、内と外のサイクルを反転させましょう。最も外側のループが実行されるたびに、1 つの列が 1 つの行として扱われます。実行、パス。
しかし、このバージョンは高すぎるように見え、実行時間も遅すぎます。しかし、結局のところ、私はそれを自分で実装したので、コメントエリアに行って他のアイデアを見つけることができます。
以下はマスターがコメント欄で実装したものですが、最初は理解できませんでした。
var transpose = function(A) { return Array.from({length:A[0].length},(_v,i)=>A.map(v=>v[i]))};复制代码
{length:A[0].length} は、「
length# を持つオブジェクト」の条件を満たすために、指定された行列の幅を転置行列の長さとして使用します。 ## 属性" 。 (_v,i)=>A.map(v=>v[i]) は、指定された行列の列を転置行列の行として受け取ります。核となるアイデアは私の 2 番目のバージョンと同じですが、実装方法とテクニックが多すぎます。そして処刑時間も短くなります、大神を崇めます。プログラミング学習について詳しく知りたい方は、
php trainingのコラムに注目してください!
以上がJS 配列について知っておくべきこと: Array.fromの詳細内容です。詳細については、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)

ホットトピック











方法: 1. 最初の要素を削除するには、shift() を使用します。構文は「array.shift()」です; 2. 最後の要素を削除するには、pop() を使用します。構文は「array.pop()」です; 3. splice() を使用して任意の位置の要素を削除します。構文は「array.splice(位置, 数値)」です。 4. length を使用して最後の N 要素を削除します。構文は「array.length=元の配列の長さ-N」です。 ; 5. 空の配列「[ ]」を直接代入して要素をクリアします; 6. delete を使用して、指定した添え字の要素を削除します。

JS で配列の長さを取得するのは非常に簡単です。各配列には length プロパティがあり、配列の最大長、つまり、その値は添字の最大値に 1 を加えたものを返します。数値の添え字は 2^32-1 未満である必要があるため、長さ属性の最大値は 2^32-1 に等しくなります。次のコードでは、空の配列を定義し、インデックスが 100 である要素に値を割り当てます。その後、length プロパティは 101 を返します。したがって、長さ属性は実際の配列要素の数を反映できません。

3 つの変換方法: 1. 指定された文字列を文字列配列に分割するには、split() を使用します。構文は「str.split (区切り文字、配列の最大長)」です; 2. 拡張演算子「...」を使用します (反復可能)文字列オブジェクトの場合、文字配列に変換します (構文 "[...str]"; 3. Array.from() を使用して文字列を配列に変換します (構文 "Array.from(str) "。

js配列をphp配列に変換することができます 操作方法は、 1.phpサンプルファイルを作成する; 2.「JSON.stringify()」という構文を使用して、js配列をJSON形式の文字列に変換する; 3.構文「json_decode()」を使用します。「JSON 形式の文字列を PHP 配列に変換します。パラメータ true がここに追加されます。これは、JSON 形式の文字列が PHP 連想配列に変換されることを意味します。

js 配列から要素を削除するには 4 つの方法があります: 1. splice を使用する; 2. filter を使用する; 3. pop メソッドとシフトを使用する; 4. delete キーワードを使用する。

JavaScript の Array.prototype.sort() メソッドは、配列の要素をソートするために使用されます。このメソッドはその場でソートします。つまり、ソートされた新しい配列を返すのではなく、元の配列を変更します。デフォルトでは、sort() メソッドは Unicode コード ポイント値に従って文字列を並べ替えます。これは、オブジェクトやその他の複雑なデータ型の並べ替えではなく、主に文字列と数値の並べ替えに使用されることを意味します。

JavaScript では、 length 属性を使用して配列の長さを取得できます。構文は「array object.length」です。また、reduce() 関数または ReduceRight() 関数を使用して要素の合計を求めることができます。構文は「」です。 arr.reduce(function f(pre,curr){return pre+cur})」または「arr.reduceRight(function f(pre,curr){return pre+cur})」。

Web 開発では、JavaScript (JS) と PHP が最も一般的に使用される 2 つのプログラミング言語であるため、開発プロセスでは配列が避けられません。この状況に対応して、多くの場合、JS 配列を PHP 配列に変換する必要があります。この機能を実現するにはさまざまな方法がありますが、以下で 1 つずつ紹介します。
