iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
1
自我挑戰組

語法改革!零基礎新手也能讀懂的JS!系列 第 4

Day04 語法改革!零基礎新手也能讀懂的JS - 物件與陣列

  • 分享至 

  • xImage
  •  

物件

所有基本型別以外的值都是物件!

一個物件可以是零至多種屬性的集合,屬性就是鍵(KEY)和值(Value)。
舉例像是寶特瓶和水,寶特瓶就是KEY而水就是VALUE!
一個值可以是某種基本型別,當然也可以是物件或函數。

物件和屬性的關聯

物件可以透過new或{} 大括號來建立一個物件實體。

var ck = new Object( )
  ck.name = 'CK'
  ck.hello = function() {
    alert(`hello ${ck.name}`)
  }

用大括號建立的稱為物件實字(Object literal)

var ck = {
  name: 'CK',
  job: 'JS',
  hello: function() {
    alert(`hello ${ck.name}`)
  }
}

物件該如何存取?

可以透過點.或中括號[]

ck.name // CK
ck.hello() // hello CK
ck["name"] // CK
ck["hello"]() // hello CK

物件屬性新增

直接使用等號=指定即可

var ck = {
  name: 'CK'
}
ck.age = 24  
ck.age // 24

物件屬性刪除

.delete

var ck = {
  name: 'CK',
  favorite:'drink'
}
ck.favorite = 'eat'  
delete ck.favorite
ck.favorite // 刪除屬性變成undefined

陣列

新增陣列

let a = new Array()
a[0] = 'ck' 
a[1] = 'yang'

但現在比較常用陣列實字(Array literal)

let a = []
a = ['ck','yang']
let b = ['ok','bang']

陣列取值方式一樣是用中括號[]

let a = [1,2,3]
console.log(a[0]) // 1

陣列新增值

將陣列新增值的方式有很多種,先介紹幾種常用的方法

.push

加入值到陣列末端

let a = [1,2,3]
a.push(4)
console.log(a) // [1,2,3,4]

unshift

加入值到陣列前端

let a = [1,2]
a.unshift(3)
console.log(a) // [3,1,2]

陣列移除值

.pop()

移除陣列末端

let a = [1,2,3]
a.pop()
console.log(a) // [1,2]

.shift()

移除陣列前端

let a = [1,2,3]
a.shift()
console.log(a) // [2,3]

查詢陣列長度

.length

let a = [1,2,3]
console.log(a.length) // 3

:exclamation:這邊提及一下.length其實可以被覆寫喔!

let a = [1,2,3]
a.length = 1
console.log(a) // 印出 [1]

這時候如果再把長度改回3會發生奇怪的事情....

let a = [1,2,3]
a.length = 1
console.log(a) // 印出 [1]
a.length = 3
console.log(a) // 印出 [1,underfined,underfined]

因為你今天如果覆寫了.length,等於是你已經刪除掉後面幾筆資料了,所以當你在試寫回來的時候資料已經不見,才會出現underfined
如果新增的值位置寫得太過靠後,中間沒有值的欄位也都會是underfined

let a = [1,2,3]
a[4] = 'b'
console.log(a) // 印出 [1, 2, 3, undefined, "b"]

查詢陣列索引

.indexOf()

let a = ['ck','yang','fat']
let index = a.indexOf('yang');
console.log(index) // 1

移除指定的索引值

.splice()

.splice(起始位置,從起始位置算起往後要刪除幾個項目)
切記,如果使用後原始陣列會被改變喔!

let a = ['ck','yang','fat','cc']
let index = a.indexOf('yang'); // 1
let remove = a.splice(index,2)
console.log(a) // ['ck','cc']
console.log(remove) // ['yang','fat']

複製陣列

.slice()

let a = ['ck','yang','fat','cc']
let b = a.slice()
console.log(b) // ['ck','yang','fat','cc']

以上大概就是物件跟陣列的操作方式,這次想試試看新的方式來統整上方的文章XD

物件就是key和value,要建立使用大括號和new
要查詢就用點或中括號+key找你所要的value。
物件新增很簡單,只要一個等號就搞定,你說刪除呢?只要一個delete。

一個中括號就代表陣列,把值塞進去就像是在排隊,號碼牌從零開始給如果要拿值,請看是幾號位。
如果想進來,push乖乖排隊,unshift直接插到最前面。
最後一位等太久不想排了就請pop走,有人插隊沒禮貌,大招shift請他走!


上一篇
Day03 語法改革!零基礎新手也能讀懂的JS - 變數資料型別(下)
下一篇
Day05 語法改革!零基礎新手也能讀懂的JS - 運算式、運算子(上)
系列文
語法改革!零基礎新手也能讀懂的JS!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言