RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 734524
Accepted
Puvvl
Puvvl
Asked:2020-10-23 15:07:33 +0000 UTC2020-10-23 15:07:33 +0000 UTC 2020-10-23 15:07:33 +0000 UTC

从数组中删除,添加到数组中。(反应/JS)

  • 772

下午好,有一个数据数组,我需要将此数据输出到 FEname但将其发送到 BE code。codeBE 上的相同可能需要几个:

[
  {
    "name": "RAILCARD",
    "code": "HMF"
  },
  {
    "name": "16-25 RAILCARD",
    "code": "YNG"
  },
  {
    "name": "NETWORK RAILCARD",
    "code": "NEW"
  },
  {
    "name": "SENIOR RAILCARD",
    "code": "SRN"
  },
  {
    "name": "ANNUAL GOLD CARD",
    "code": "NGC"
  },
  {
    "name": "JCP DISCOUNT CARD",
    "code": "JCP"
  },
  {
    "name": "FAMILY & FRIENDS RCD",
    "code": "FAM"
  },
  {
    "name": "DISABLED ADULT",
    "code": "DIS"
  },
  {
    "name": "DISABLED CHILD",
    "code": "DIC"
  },
  {
    "name": "TWO TOGETHER R/CARD",
    "code": "2TR"
  }
]

这是我的状态:

constructor(props) {
    super(props);
    this.state = {
        railcards: railcards.map((key) => key.name),
        chipData: [],
        chipCode: [],
    };

    this.search = this.search.bind(this);
}

添加脚本+发送到BE,在这里我们在我们的数据中找到一个字段name并将其写入一个单独的状态code:

async search() {

    let chipsFound = railcards.find((e) => {
        let result;
        self.state.chipData.map((key) => key.label).forEach(function(item, index) {
            result = e.name[index] === item[index];
        });
        return result;
    });
    let chips = chipsFound ? chipsFound.code : undefined;
    self.setState({chipCode: self.state.chipCode.concat(chips)})
}

以下是删除脚本:

handleRequestDelete = (key) => {
    this.chipData = this.state.chipData;
    const chipToDelete = this.chipData.map((chip) => chip.key).indexOf(key);
    this.chipData.splice(chipToDelete, 1);
    this.setState({
        chipData: this.chipData,
    });
    this.search()
};

帮助删除,如果有更好的解决方案,添加到数组中,也告诉我:-)

我注意到一个小问题,例如:如果我们从数组 c 中删除一个元素key: 3并尝试再次添加一个元素,那么该元素就会出现重复key. (即添加与具有相同键的数组的最后一个元素相同的元素)

javascript
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Puvvl
    2020-10-23T18:11:55Z2020-10-23T18:11:55Z

    我这样解决了我的问题(对谁有用),你可以提供你的选择,我只会很高兴:

    用我们需要的键添加name到的功能:statechipData

    handleUpdateInput = (searchText) => {
        let chipKey;
        for (let i = 0; i < this.state.chipCode.length; i++) {
            chipKey = i + 1;
        }
        if(this.state.chipData.map((chip) => chip.key).indexOf(chipKey) > -1) {
            chipKey = this.state.chipData.length + 1;
        } else {
            for (let i = 0; i < this.state.chipCode.length; i++) {
                chipKey = i + 1;
            }
        }
        this.setState({
            chipData: this.state.chipData.concat([{key: chipKey === undefined ? 0 : chipKey, label: searchText}]),
            searchText: '',
        });
    };
    

    用我们需要的键添加code到的功能:statechipCode

    handleRequestAdd = () => {
        let chipsFound = railcards.find((e) => {
            let result;
            this.state.chipData.map((key) => key.label).forEach(function(item) {
                result = e.name === item;
            });
            return result;
        });
        let chips = chipsFound ? chipsFound.code : undefined;
        let chipKey;
        for (let i = 0; i < this.state.chipData.length; i++) {
            chipKey = i;
        }
        if(this.state.chipCode.map((chip) => chip.key).indexOf(chipKey) > -1) {
            chipKey = this.state.chipCode.length + 1;
        } else {
            for (let i = 0; i < this.state.chipData.length; i++) {
                chipKey = i;
            }
        }
        this.setState({chipCode: this.state.chipCode.concat([{key: chipKey, label: chips}])})
    };
    

    state chipCode从两个和chipData按键中删除功能:

    handleRequestDelete = (key) => {
        this.chipData = this.state.chipData;
        this.chipCode = this.state.chipCode;
        const chipToDelete = this.chipData.map((chip) => chip.key).indexOf(key);
        const chipCodeToDelete = this.chipCode.map((chip) => chip.key).indexOf(key);
        this.chipData.splice(chipToDelete, 1);
        this.chipCode.splice(chipCodeToDelete, 1);
        this.setState({
            chipData: this.chipData,
            chipCode: this.chipCode,
        });
        if(this.state.origin.length && this.state.destination.length) {
            this.search()
        }
    };
    
    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5