【问题标题】:How find and delete element from array如何从数组中查找和删除元素
【发布时间】:2022-06-10 16:56:26
【问题描述】:
   const data = [
      {
        "id": 9,
        "name": "New section",
        "created_at": "2022-06-10T07:20:37.000000Z",
        "section": []
      },
      {
        "id": 10,
        "name": "New section",
        "created_at": "2022-06-10T07:20:41.000000Z",
        "section": []
      }
    ]

    deleteSection(id) {
        const result = data.find(
            (passDetail) => passDetail.id === id
        );
        data.splice(result, 1);
    }

如何从数组中删除元素,我试过这段代码,但它没有删除需要的元素

【问题讨论】:

  • find 从数组中返回一个项目——你可能想要findIndex
  • 使用filter( )方法
  • @Moeinmoeinnia - 过滤器的问题在于它与拼接数组不同并且可能破坏其他反应性(问题最初是用 vuejs 标记的 - 所以 - 可能是一个取决于 OP 使用方式的因素vuejs,即正确或错误)
  • 请阅读文档。语法:splice(start, deleteCount)。 "start: 开始改变数组的索引。"

标签: javascript


【解决方案1】:

您可以使用findIndex 执行此操作

const data = [{
    "id": 9,
    "name": "New section",
    "created_at": "2022-06-10T07:20:37.000000Z",
    "section": []
  },
  {
    "id": 10,
    "name": "New section",
    "created_at": "2022-06-10T07:20:41.000000Z",
    "section": []
  }
]

const deleteSection = (id) => {
  const result = data.findIndex(
    (passDetail) => passDetail.id === id
  );
  data.splice(result, 1);
}
deleteSection(9)
console.log(data)

【讨论】:

    【解决方案2】:

    您可以使用filter 和indexOf 方法。

    const data = [
      {
        id: 9,
        name: "New section",
        created_at: "2022-06-10T07:20:37.000000Z",
        section: [],
      },
      {
        id: 10,
        name: "New section",
        created_at: "2022-06-10T07:20:41.000000Z",
        section: [],
      },
    ];
    const deleteSection = (id) => {
      data.filter(function (item) {
        if (item.id === id) {
          data.splice(data.indexOf(item), 1);
        }
      });
    }
    deleteSection(10);
    console.log(data);

    【讨论】:

      【解决方案3】:

      因为你没有声明 function deleteSection(id) 请添加“功能”

      【讨论】:

        【解决方案4】:

        您的代码运行正常:

        您只是忘记在函数定义语法中添加 function

        另外,函数不会自己调用,你必须在你的主线程中调用它们。

        const data = [{
            "id": 9,
            "name": "New section",
            "created_at": "2022-06-10T07:20:37.000000Z",
            "section": []
          },
          {
            "id": 10,
            "name": "New section",
            "created_at": "2022-06-10T07:20:41.000000Z",
            "section": []
          }
        ]
        
        // console.log(data);
        
        deleteSection(10)
        console.log(data);
        
        function deleteSection(id) {
          const result = data.find(
            (passDetail) => passDetail.id === id
          );
          data.splice(result, 1);
        }

        输出:

        [
          {
            "id": 10,
            "name": "New section",
            "created_at": "2022-06-10T07:20:41.000000Z",
            "section": []
          }
        ]
        

        【讨论】:

        • 代码不起作用。 splice 的第一个参数是索引,但在这种情况下,它发送的是一个对象。
        • @adiga 请在投反对票之前对其进行测试。它按预期工作请删除该downvote!
        猜你喜欢
        • 2021-09-17
        • 1970-01-01
        • 2023-01-30
        • 1970-01-01
        • 1970-01-01
        • 2021-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多