javascriptメモ
毎回ググるなら自分でメモっておけばいいじゃない
配列をある条件でフィルターする
配列の1要素を引数にとり、真偽値を返すコールバックメソッドを引数で渡すことで、trueを返した要素のみで構成された配列を返却するメソッド。
以下の例だと、type=1のフルーツだけにフィルタする。
filter.js
var ary = [
{ type: 1, name: 'りんご' },
{ type: 2, name: 'ぎゅうにく' },
{ type: 1, name: 'みかん' },
{ type: 3, name: 'きゃべつ' },
{ type: 1, name: 'どりあん' }
]
var fruit = ary.filter((el) => {
return el.type === 1
})
console.log(fruit)
配列にある要素が存在するか判別する
配列の1要素を引数にとり、真偽値を返すコールバックメソッドを引数で渡すことで、trueを返す要素があるかどうかを真偽値で返却するメソッド。
配列の中でエラーフラグの立っているヤツはいるかな?とかを判定するのに使用するイメージ。
trueを返す要素があるとそこで探査が止まるので、ついでで全体に処理をしようとか考えてはいけない。
some.js
var ary = [
{ type: 1, name: 'りんご' },
{ type: 2, name: 'ぎゅうにく' },
{ type: 1, name: 'みかん' },
{ type: 3, name: 'きゃべつ' },
{ type: 1, name: 'どりあん' }
]
var isGyu = ary.some((el) => {
return el.name === 'ぎゅうにく'
})
var isButa = ary.some((el) => {
return el.name === 'ぶたにく'
})
console.log(isGyu) // true
console.log(isButa) // false
for each で処理する
配列の1要素を引数にとるコールバックメソッドを引数に渡すことで、配列の各要素にたいしてコールバックで処理をする。
他の言語でよくあるfor eachだと、配列やリストの一要素が変数に代入されてループ内のブロックで処理するけれど、それがメソッドになっているイメージ。この形式もよくあるというか最近のトレンド?
コールバックメソッドは引数を3こまで指定できる。先頭から、配列の要素、インデックス、元の配列が渡される。やろうと思えばコールバックメソッドで配列の要素数を増減できそうだけど、やらないほうが吉だと思う。
forEach.js
var ary = [
{ type: 1, name: 'りんご' },
{ type: 2, name: 'ぎゅうにく' },
{ type: 1, name: 'みかん' },
{ type: 3, name: 'きゃべつ' },
{ type: 1, name: 'どりあん' },
]
ary.forEach((el) => {
el.name = el.name + ' おいしい'
})
ary.forEach((el, index) => {
console.log(index + ':' + el.name)
})