js數組
js的數組不是典型的數組
典型的數組
元素的數據類型相同
使用連續的內存儲存
通過數字下標獲取元素
但是js的數組不這樣
元素的數據類型可以不同
內存不一定連續的(對象是隨機儲存的)
不可以通過數字下標,而是通過字符串下標
這意味著數組可以有任何的key
比如:
let arr = [1,2,3]
let['xxx'] =1
對比不同:
典型的數組:連續存儲的
但是js的數組:
//創建一個數組:
let arr = [1,2,3]
let arr = new Array(1,2,3)
let arr = new Array(3)//長度
//轉化數組
let str = '1,2,3'
undefined
str.split(',')
(3) ["1", "2", "3"]
let str = '123'.split('')
undefined
str
(3) ["1", "2", "3"]
Array.from({0:'1',1:'b',length:4})
(4) ["1", "b", undefined, undefined]
圖片來自于:
寫代碼啦!?xiedaimala.com
偽數組(偷偷轉化為數組)
偽數組的原型鏈中并沒有數組的原型,沒有數組共用屬性的數組就是偽數組
什么是偽數組?
擁有 length 屬性,其它屬性(索引)為非負整數(對象中的索引會被當做字符串來處理,這里你可以當做是個非負整數串來理解)不具有數組所具有的方法let divList = document.querySelector('div')
偽數組的原型鏈中并沒有數組的原型原理:
array = [1,2,3,4,5](5) [1, 2, 3, 4, 5]array.__proto__ === Array.prototype
true
array(5) [1, 2, 3, 4, 5]
0: 1
1: 2
2: 3
3: 4
4: 5
length: 5
__proto__: Array(0)//第一層原型
concat: ? concat()
constructor: ? Array()
copyWithin: ? copyWithin()
entries: ? entries()
every: ? every()
fill: ? fill()
filter: ? filter()
find: ? find()
findIndex: ? findIndex()
flat: ? flat()
flatMap: ? flatMap()
forEach: ? forEach()
includes: ? includes()
indexOf: ? indexOf()
join: ? join()
keys: ? keys()
lastIndexOf: ? lastIndexOf()
length: 0
map: ? map()
pop: ? pop()
push: ? push()
reduce: ? reduce()
reduceRight: ? reduceRight()
reverse: ? reverse()
shift: ? shift()
slice: ? slice()
some: ? some()
sort: ? sort()
splice: ? splice()
toLocaleString: ? toLocaleString()
toString: ? toString()
unshift: ? unshift()
values: ? values()
Symbol(Symbol.iterator): ? values()
Symbol(Symbol.unscopables): {copyWithin: true, entries: true, fill: true, find: true, findIndex: true, …}
__proto__: //第二層原型
constructor: ? Object()
hasOwnProperty: ? hasOwnProperty()
isPrototypeOf: ? isPrototypeOf()
propertyIsEnumerable: ? propertyIsEnumerable()
toLocaleString: ? toLocaleString()
toString: ? toString()
valueOf: ? valueOf()
__defineGetter__: ? __defineGetter__()
__defineSetter__: ? __defineSetter__()
__lookupGetter__: ? __lookupGetter__()
__lookupSetter__: ? __lookupSetter__()
get __proto__: ? __proto__()
set __proto__: ? __proto__()
array = {0:'a',1:'b',2:'c',length:3}
{0: "a", 1: "b", 2: "c", length: 3}
0: "a"
1: "b"
2: "c"
length: 3
__proto__:
constructor: ? Object()
hasOwnProperty: ? hasOwnProperty()
isPrototypeOf: ? isPrototypeOf()
propertyIsEnumerable: ? propertyIsEnumerable()
toLocaleString: ? toLocaleString()
toString: ? toString()
valueOf: ? valueOf()
__defineGetter__: ? __defineGetter__()
__defineSetter__: ? __defineSetter__()
__lookupGetter__: ? __lookupGetter__()
__lookupSetter__: ? __lookupSetter__()
get __proto__: ? __proto__()
set __proto__: ? __proto__()
詳細內容:
JavaScript中的偽數組和數組_jhkkk的博客-CSDN博客_偽數組?blog.csdn.net
contact:連接兩個數組,但是不改變兩個數組
let arr3 = [3,3,3]
undefined
let arr4 = [4,4,4]
undefined
arr3.concat(arr4)
(6) [3, 3, 3, 4, 4, 4]
arr3
(3) [3, 3, 3]
arr4
(3) [4, 4, 4]
slice:切分兩個數組但是不改變這兩個數組
想要復制的方法就用
arr.slice(0)//注意,js只提供淺拷貝let arr5 = [1,2,3,4,5,6,7,8,9]
undefined
arr5.slice(2)
(7) [3, 4, 5, 6, 7, 8, 9]
arr5
(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
總結
以上是生活随笔為你收集整理的创建数组_如何创建数组的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。