((꜆꜄ ˙-˙ )꜆꜄꜆ 接招!
晚安 ⑅ 我是 SONYKO
今天星巴巴推出萬聖節貓貓周邊♡♡
身為貓奴的我也買了一個小杯杯
結果看起來超像香爐 ...
延續昨天、今天也要介紹陣列 ( ˙꒳˙ᐢ )
今天介紹項目:
成為陣列王者的路途還很遙遠。
事不宜遲! レッツゴー!✧
主要用來檢索 文 字 列 ( string )。
文字列喔 ( ˙꒳˙ᐢ )⑅
先來看公式:
/* (變數名).indexOf( 參數一 , 參數二 ) */
看起來好像很簡單、但還是有些奇妙的地方。
來看範例:
// 你要檢索的字串
let pokemon = '呆呆獸, 皮卡, 種子, 沼王, 噴否龍'
// let 一個檢索結果
let pkm_index = pokemon.indexOf('皮')
consoel.log(pkm_index) // 5
欸!為什麼是 5 啊!
陣列裡面他是第 1 筆啊你騙人 (゚Д゚# )
大哥、冷靜!
你看清楚差不是陣列 ( 陷阱題 )
所以空格和逗號 都算一個字元喔!
這次加入第二個參數、
我們再看這個飯膩:
let pokemon = '呆呆獸, 皮卡, 種子, 沼王, 噴否龍, 種子'
// 我們要找種子、從第10個字元開始找。
let pkm_index = pokemon.indexOf('種子',10)
console.log(pkm_index) // 22
雖然說是搜尋第10個字元之後的種子、
最後 console 出來的結果還是會重頭開始數哩。
然後再注意一點就是:字元也是從 0 開始數。
那來把 indexOf 用在 陣列上看看吧。
畢竟我們是要成為陣列大濕 ( ˙꒳˙ᐢ )
let boyfriend = ['荒牧慶彦','鳴上嵐','山田次郎','月岡紬']
let bf_index = boyfriend.indexOf('鳴上嵐')
console.log (bf_index) // 1
おおお! 是我們熟悉的結果!
陣列與字串不同、陣列是一筆一筆數。
阿這邊參數一定要打出完整一筆內容喔
中文不太好、所以我們再來看一個範例:
let boyfriend = ['荒牧慶彦','鳴上嵐','山田次郎','月岡紬']
let bf_index = boyfriend.indexOf('山田')
console.log (bf_index) // -1
-1 是什麼 ? 倒數第二筆的意思嗎
不是、這邊 -1 是找不到結果的意思。
因為我沒有完整的打出「山田次郎」、所以他搜尋不到符合的項目。
⑅ 結論:
⑅ 最後一個重點:
第二個參數可以代入負數。( 陣列only , 字串統一回傳 -1 )
但他的最後一筆是 -1 並不是 0 歐 !要注意一下。
回合終了。 EXP + 500 。
他跟 indexOf 有 87% 像、
為什麼多了個 last 呢? 因為他是 從後面開始檢索。
公式:
/* (變數名).indexOf( 參數一 , 參數二 ) */
我們先從只有一個參數的例子開始看:
let pokemon = '皮卡, 種子, 噴否龍, 種子'
let pkm_index = pokemon.lastIndexOf('種子')
console.log(pkm_index) // 13
因為他是從後面往前檢索、
所以這邊的種子是噴否龍後面的種子。
一樣記得逗號 和 空白鍵 也算在字元內 ( ˙꒳˙ᐢ )
再來看進階範例:
/* 1 */
let pokemon = '皮卡, 種子, 噴否龍, 種子'
let pkm_index = pokemon.lastIndexOf('種子',3)
console.log(pkm_index) // -1
還記得如果搜尋不到結果、會回傳 -1 嗎
那這邊為什麼會找不到呢?
3 的位置是 種子前面的空白鍵、
lastIndexOf 是從你選到的位置往前檢索,因為前面沒有種子所以回傳 -1 。
/* 2 - 1 */
let pokemon = ['皮卡', '種子', '噴否龍', '種子']
let pkm_index = pokemon.lastIndexOf('種子',-1)
console.log(pkm_index) // 3
/* 2 - 2 */
let pokemon = ['皮卡', '種子', '噴否龍', '種子']
let pkm_index = pokemon.lastIndexOf('種子',2)
console.log(pkm_index) // 1
只有陣列、第二個參數才能代負數進去歐。
然後 陣列最尾端是 -1 ,要小心陷阱 (U 'ᴗ' U)
關於 indexOf 和 lastIndexOf 的介紹就到這邊 。
EXP + 200 ♡♡♡
他只會回傳一次値給你。
回傳的是 第一個符合判斷條件 的元素。
範例:
let cats = [
{
name : 'miu',
age : 11
},{
name : '肥貓',
age : 8
},{
name : '瘦貓',
age : 5
}
]
let findCat = cats.find(function(i){
return i.name == 'miu'
})
console.log(findCat)
// Object {
age: 11,
name: "miu"
}
上面這個範例大概可以看出他怎麼用吧!
函式參數名稱( i ) 可以自定義。
然後要記得 return ( ˙꒳˙ᐢ )
阿這個範例沒有講到什麼叫做 只回傳一次値、
所以我們來看下面這個例子:
let cats = [
{
name : 'miu',
age : 11
},{
name : '肥貓',
age : 8
},{
name : '瘦貓',
age : 5
} ,{
name : '肥貓',
age : 1
}
]
let findCat = cats.find(function(i){
return i.name == '肥貓'
})
console.log(findCat)
// Object {
age: 8,
name: "肥貓"
}
我們陣列裡有兩個肥貓物件、
但檢索出來只得到最上面的肥貓 。
因為他只會 回傳一次値 ✧
怎麼又是 index
不過看到 index 你大概會感覺到
他回傳的東西應該是 檢索的位置( 數字 )。
那這個語法的觀念就是 find + index
只會回傳一次値、
找不到値也會回傳 -1 ( ˙꒳˙ᐢ )♪
看到ES6 大家可能都會想到「 箭頭函式 」
其實 find 和 findIndex( ) 通常也會搭配箭頭函式。
但因為我的鐵人賽還沒寫到、所以這邊一樣用傳統函式。
直接來看範例:
let cats = [
{
name : 'miu',
age : 11
},{
name : '肥貓',
age : 8
},{
name : '瘦貓',
age : 5
} ,{
name : '肥貓',
age : 1
}
]
// 找出肥貓在陣列第幾項
let findCat = cats.findIndex(function(i){
return i.name == '肥貓'
})
console.log (findCat) // 1 (雖然陣列1 3 都是肥貓、但只會回傳一筆)
/* 注目!! */
const result = cats[findCat]
console.log (result)
// Object {
age: 8,
name: "肥貓"
}
wow 太狂惹吧! 那還需要 find 嗎
對啊、findIndex 事實上就比 find 還要萬能。
那來看看回傳 -1 的情形:
/* 呈上面陣列 */
let findCat = cats.findIndex(function(i){
return i.name == '噴否龍'
})
console.log(findCat)
const result = cats[findCat]
if(findCat===-1){
console.log(`沒這鬼東西`)
}
因為上面陣列沒有噴否龍、所以會回傳 -1 。
下面 if 條件符合、因此回傳 ' 沒這鬼東西 ' 。
所以 findIndex 和 if 也是好朋友 ( ˙꒳˙ᐢ )♪
Level Up ↑↑↑ ✧
明天先來講個箭頭函式好了。
然後再繼續朝著陣列王者之路前進 ⑅
じゃあねー ♪♪
(音檔離家出走)
音檔回家了
日本語 | 平仮名 | 中・英 | 羅馬拼音 |
---|---|---|---|
検索する | けんさくする | 搜尋、檢索 | Ken sa ku Su ru |
返り値 | かえりち | 回傳値 | Ka e ri Chi |
上書き | うわがき | 覆蓋 | U wa ga ki |
省略 | しょうりゃく | 省略 | Shou Rya ku |
アロー関数 | あろーかんすう | 箭頭函式 | Aro- Kan suu |
インデックス | index 索引 | In De kku su | |
先頭 | せんとう | 最前端 | Sen Tou |
添字 | そえじ | 索引 index (和式用語) | So E Ji |
⑅ 条件に一致する要素の値を取得する | |||
→ 取得符合條件的元素的値 | |||
其實我有點忘記自己打過什麼單字了(ˉ ˘ ˉ; ) | |||
原諒我ㄉ腦容量不足 555 |