あるとちょっと便利な arrayPush メソッド
- カテゴリ:
- JavaScript
- コメント数:
- Comments: 0
◆ データ無くてもいきなり push できるメソッド作りました
◆ ECMA6 見やすい
◆ ECMA6 見やすい
配列やオブジェクトに対して 特定のキーにデータを配列で追加していきたいってけっこうな頻度でありますよね
最初は undefined なので データをつくって すでにデータがあると push して という分岐があって見づらいものです
そこで ちょっと楽できるように arrayPush メソッドを用意しました
例えば
特に意味があるコードじゃないですが 配列の値で同じ値のもののインデックスを配列で欲しいときです
これが arrayPush使うとこうなります
すごく見やすいですよね
arrayPush メソッドの中身はこれです
ECMA6 で書いてますが 普通に書くより格段に見やすいです
「...」 便利!!
引数の受け取りのところの「...」は Chrome ではできないので arguments にしてます
対応すればコメントのようにできるはずです
arguments でもコード量は特に変わらないですが 引数が 2 つ以上対応ってわかるのでどうせなら ...args のほうがいいですね
最初は undefined なので データをつくって すでにデータがあると push して という分岐があって見づらいものです
そこで ちょっと楽できるように arrayPush メソッドを用意しました
例えば
var array = [1,4,3,2,1,4,3]
var obj = {}
array.forEach((e,i) =>{
if(obj[e]){
obj[e].push(i)
}else{
obj[e] = [i]
}
})
こういうのvar obj = {}
array.forEach((e,i) =>{
if(obj[e]){
obj[e].push(i)
}else{
obj[e] = [i]
}
})
特に意味があるコードじゃないですが 配列の値で同じ値のもののインデックスを配列で欲しいときです
これが arrayPush使うとこうなります
var array = [1,4,3,2,1,4,3]
var obj = {}
array.forEach((e,i) => obj.arrayPush(e, i))
var obj = {}
array.forEach((e,i) => obj.arrayPush(e, i))
すごく見やすいですよね
arrayPush メソッドの中身はこれです
Object.prototype.arrayPush = function(key /*, ...args*/){
var pushValues = [...arguments].slice(1) /* args.slice(1) */
if(key in this){
if(this[key] instanceof Array){
this[key] = [...this[key], ...pushValues]
}else{
this[key] = [this[key], ...pushValues]
}
}else{
this[key] = pushValues
}
}
var pushValues = [...arguments].slice(1) /* args.slice(1) */
if(key in this){
if(this[key] instanceof Array){
this[key] = [...this[key], ...pushValues]
}else{
this[key] = [this[key], ...pushValues]
}
}else{
this[key] = pushValues
}
}
ECMA6 で書いてますが 普通に書くより格段に見やすいです
「...」 便利!!
引数の受け取りのところの「...」は Chrome ではできないので arguments にしてます
対応すればコメントのようにできるはずです
arguments でもコード量は特に変わらないですが 引数が 2 つ以上対応ってわかるのでどうせなら ...args のほうがいいですね