2016年9月6日火曜日

jsで連想配列において、特定の要素を持つものを削除するには的なお話

  • このエントリーをはてなブックマークに追加

reactを使っていると特定の要素を削除するとかそういうことがよくある。
それが先頭とか末尾とかであるならばshiftやらpopを使えば事足りるわけではあるけれども、
配列の何番目とか配列の中でid=1のものを削除とかだとjsにはそういうメソッドがなかったりする。

ということで今日はそこらへんをやるには的なお話をば。

■単純な配列において、何番目の要素を削除する

var ary = ["a","b","c","d","e"];
ary.splice(2,1); // 戻り値は["c"]
console.log(ary); // ["a","b","d","e"]

splice()というメソッドを使ってあげればよい。
ちなみに面倒なのがspliceでの挙動。
ary.splice()した戻り値は切り取ったものとなるので、
var ary = ary.splice(2,1)とすると別のものとなるので注意。


■連想配列において、何番目の要素を削除する

var ary = [
  {id:1,foo:"bar"},
  {id:2,foo:"barbar"},
  {id:"hoge",foo:"test"},
  {id:"hogehoge",foo:"testtest"}
];

ary.splice(2,1);

console.log(ary);
// [
//  {id:1,foo:"bar"},
//  {id:2,foo:"barbar"},
//  {id:"hogehoge",foo:"testtest"}
// ]

これも単純な配列と同じで、何番目をsliceしてあげればよいだけ。


■連想配列において、特定の要素を持つものを削除する

ary.some(function(value,index){
  if(value.id == 2){
    ary.splice(index,1);
  }
}

console.log(ary)
// [
//  {id:1,foo:"bar"},
//  {id:"hoge",foo:"test"},
//  {id:"hogehoge",foo:"testtest"}
// ]
});

こんな感じ。
some関数っていうのを使ってあげれば大丈夫。
で、some関数でコールバックを指定してあげ、その中で特定の要素に該当するかどうかをチェックしてslice()みたいな。


こういう感じで面倒だけどできるし、some関数使えばかなり省略してて綺麗に見えるみたいな的な。

Adsense