为了账号安全,请及时绑定邮箱和手机立即绑定

如果列表中不存在某个项目,我想将其推送到列表中。如果该项目已在列表中,则删除该项目

如果列表中不存在某个项目,我想将其推送到列表中。如果该项目已在列表中,则删除该项目

冉冉说 2023-09-14 18:02:38
如果某个项目以前未包含在列表中,我想将其推送到列表中。如果存在,则删除该项目。我能够完成第一部分,但不知道如何删除它。 handleCityCheckbox = (param1) => {    var { cityList = [] } = this.state;      //if cityList doesnt have param1    if (!cityList.includes(param1)) {      cityList.push(param1);      this.setState({ cityList });    } else  {          }    this.setState({ cityList });  };其他部分是什么?
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

handleCityCheckbox = (param1) => {

    const { cityList = [] } = this.state;

    const itemIndex = cityList.indexOf(param1);

    if (itemIndex === -1)) {

      cityList.push(param1);

    } else  {

      cityList = cityList.filter((e, index) => index !== itemIndex)

    }

    this.setState({ cityList });

  };


查看完整回答
反对 回复 2023-09-14
?
潇湘沐

TA贡献1816条经验 获得超6个赞

过滤功能:


 const handleSubmit = (event) => {

    event.preventDefault();

    if (!name) {

      alert("Enter the city name");

      return;

    }

    let tempList = cities.filter(

      (city) => city.toLowerCase() !== name.toLowerCase()

    );


    if (tempList.length === cities.length) {

      tempList.push(name);

      setCities(tempList);

      return;

    } else {

      setCities(tempList);

    }

  };

在上面的函数中,我们首先使用filter函数过滤掉城市名称,如果存在则删除并赋值给,然后与主列表tempList比较 的大小,如果相同则说明该城市名称不存在于主列表中,因此我们将其推送到并使用 modded更新状态,否则,我们只需设置过滤掉的。tempListcitiesnametempListcitiestempListtempList


完整示例:



import React, { useState } from "react";

import "./styles.css";


export default function App() {

  const [cities, setCities] = useState(["Pune", "Delhi"]);

  const [name, setName] = useState("");

  const handleSubmit = (event) => {

    event.preventDefault();

    if (!name) {

      alert("Enter the city name");

      return;

    }

    let tempList = cities.filter(

      (city) => city.toLowerCase() !== name.toLowerCase()

    );


    if (tempList.length === cities.length) {

      tempList.push(name);

      setCities(tempList);

      return;

    } else {

      setCities(tempList);

    }

  };

  return (

    <div className="App">

      <form onSubmit={handleSubmit}>

        <input onChange={(event) => setName(event.target.value)} />

        <button type="submit">Submit</button>

      </form>

      {cities.map((city) => (

        <p>{city}</p>

      ))}

    </div>

  );

}

代码沙箱链接


查看完整回答
反对 回复 2023-09-14
  • 2 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信