学習8週間-JS Array
6365 ワード
整列
配列は複数の値順に並べられた資料構造である.値の順序とlength propertyがあるので、順序アクセス値に適した資料構造です.
¥¥¥少し並びがわかります.
データ構造の一般的なシナリオ:
各要素が同じデータサイズを有し、配列された要素が1つのデータ型に統一され、シームレスに連続する
밀집 배열
の資料構造を指す.검색 대상 요소의 메모리 주소 = 배열의 시작 메모리 주소 + 인덱스 * 요소의 바이트 수
👍Pros
すなわち,配列はインデックスによって任意の要素に一度の演算でアクセスできるため,非常に速く動作する.( 時間の複雑さ O(1))
🖕Cons
ただし、ソートされていない配列で要素を検索する場合は、最初から要素が発見されるまで、配列内のすべての要素を順次検索する必要があります.(線形探索、時間複雑度O(n))
また、配列に要素を挿入または削除する場合は、配列内の要素を連続的に維持するために要素を移動する必要があります.
JavaScript配列:
희소 배열
).JavaScriptの配列は配列ではありませんか?
const arr = [1,2,3]
typeof arr // 'object'
arr.constructor === Array //true
Object.getPrototypeOf(arr) === Array.prototype //true
厳密にはjavascriptの配列は、従来の配列動作を模した特殊な객체
である.次のコードを見てください.console.log(Object.getOwnPropertyDescriptors([1,2,3]))
/*
{
'0': {
value: 1,
writable: true,
enumerable: true,
configurable: true
},
'1': {
value: 2,
writable: true,
enumerable: true,
configurable: true
},
'2': {
value: 3,
writable: true,
enumerable: true,
configurable: true
},
length: {
value: 3,
writable: true,
enumerable: false,
configurable: false
}
}
*/
このようにJavaScriptの配列はインデックスを表す文字列をproperty「キー」とし,長さpropertyを持つオブジェクトである.配列された要素は実はpropertyの値です.JavaScriptの一般オブジェクトと配列
JAvascriptの配列は、通常のオブジェクトと配列を区別し、要素へのアクセスが通常の配列よりも遅い構造を補うために配列のように動作させる構造を実現します.
次のコードから見ると,配列と通常のオブジェクトの性能は速度の2倍程度異なる.
const obj = {}
console.time('obj performance test')
for(let i = 0; i < 100000000; i ++){
obj[i] = i;
}
console.timeEnd('obj performance test')
// obj performance test: 1097.928955078125 ms
const arr = []
console.time('arr performance test')
for(let i = 0; i < 100000000; i ++){
arr[i] = i;
}
console.timeEnd('arr performance test')
// arr performance test: 556.688720703125 ms
Reference
この問題について(学習8週間-JS Array), 我々は、より多くの情報をここで見つけました https://velog.io/@bumikim26/스터디-8주차-주간-공부-내용-JS-Arrayテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol