map

Electron

mapとforEachの違い

mapは配列を受け取り、戻り値を配列でリターンする

つまり、配列を扱うときはforEachではなくmapをつかう

配列が[‘要素1’, ‘要素2’, ‘要素3’]の場合

import React from 'react';
import { useState, useEffect } from 'react';

export default function Home() {
  const [tasks, setTasks] = useState(() => {
    const savedata = localStorage.getItem('tasks');
    return savedata ? JSON.parse(savedata) : [];
  });
  const [input, setInput] = useState('');

  useEffect(() => {
    localStorage.setItem('tasks', JSON.stringify(tasks));
  }, [tasks]);

  const addTask = () => {
    if (input.trim() === '') return;
    setTasks([...tasks, input]);
    setInput('');
  };

  const deleteTask = (index) => {
    const newTask = [...tasks];
    newTask.splice(index, 1);
    setTasks(newTasks);
  };

  return (
    <>
      <ul>
        // map関数内にHTMLタグを入れるので、
        // (task, idx)=>の後は{}ではなく()とすること
        // 逆に{}内はJSの世界なのでtasks.mapが書ける
        {tasks.map((task, idx) => (
          <li key={idx}>
            {task}
            <button onClick={() => deleteTask(idx)}>削除</button>
          </li>
        ))}
      </ul>
      <div>
        <input
          type="text"
          value={input}
          onChange={(e) => setInput(e.target.value)}
          placeholder="fill out task" />
        <button onClick{addTask} >追加</button>
      </div>
    </>
  );
}

配列内にオブジェクトが入っている場合

import React from 'react';

export default function Home() {
  const array = [
    {
      title: 'タイトル1',
      date: '2025/01',
    },
    {
      title: 'タイトル2',
      date: '2025/02',
    }
  ];
  return (
    <ul>
      {array.map((element) => (
        <li>
          {element.title}
          {element.date}
        </li>
      ))}
    </ul>
  );
}
BACK