Table of Contents
Javascript の 配列の中で特定の条件を満たす項目を削除した結果を返す関数 filter について。
JSON形式の配列については返り値が元々の配列の形から変わることが分かった。
この State に下記の項目があるものとする
const [itemRaws, setItemRaws] = useState([]);
itemRaws
{
[
"name": "Tanaka",
"id": "0"
],
[
"name": "Suzuki",
"id": "1"
],
[
"name": "Sato",
"id": "2"
]
}
ここから、deleteTagIdRaw の中にある数字と同じ id の値を持った項目を削除する処理を
map と filter で行う
deleteTagIdRaw = {1}
let returnItemRaws = deleteTagIdRaw.map((deleteId, index) => {
return(itemRaws.filter((cell, deleteIndex) => (cell.id!== deleteId)))
})
returnItemRaws に返ってくる値は・・
returnItemRaws 予想
{
[
“name”: “Tanaka”,
“id”: “0”
],
[
“name”: “Sato”,
“id”: “2”
]
}
こうなると思っていたら、実際は
下記の形になっていた
returnItemRaws 実際
{
[
[
"name": "Tanaka",
"id": "0"
]
[
"name": "Sato",
"id": "2"
]
]
}
実際はひとつ下位の入れ子にまとめて入っている。
分かったこと
もし itemRaws に入っていた 項目をすべて参照したいときは、
returnItemRaws[0].map((item, index) => {})
のように0個めを参照する必要がある。