方法splice和findindexJavaScript问题搜索板 更新findIndex函数以在数组内部然后在属性中查找

问题描述

我的问题是我有一个名为object的数组,其中几个对象本身都位于数组中。 如何使用splice和findindex方法检索它们? 就当前的当前代码而言,当我单击从购物篮中删除的任何按钮时,它将从数组中删除最后一个对象。 我还有另一个object2,它是一个仅包含id的简单数组,使用的方法效果很好。 我想通过按ID搜索从对象数组中删除一个对象。 例如,使用object2数组,该方法在我的代码效果很好,但是对于object数组,该方法不行。

object:

(5) [Array(2),Array(2),Array(2)]
0: Array(2)
0: {lenses: Array(2),_id: "5be1ed3f1c9d44000030b061",name: "ZuRSS 50S",price: 49900,description: "Lorem ipsum dolor sit amet,consectetur adipisicin…mpor incididunt ut labore et dolore magna aliqua.",…}
1: "35mm 1.4"
length: 2
__proto__: Array(0)
1: (2) [{…},"50mm 1.8"]
2: (2) [{…},"25mm 4.5"]
3: (2) [{…},"50mm 1.7"]
4: (2) [{…},"50mm 1.4"]
length: 5
__proto__: Array(0)

object2 :

(5) ["5be1ed3f1c9d44000030b061","5be1ef211c9d44000030b062","5be9bc241c9d440000a730e7","5be9c4471c9d440000a730e8","5be9c4c71c9d440000a730e9"]

这是我的代码

butonAll[i].addEventListener("click",function (e) {
        console.log("supprime moi");
        const id = e.target.getAttribute("data-id");

        objectJs2.splice(
          objectJs2.findindex((x) => {
            return x === id;
          }),1
        );
        objectJs.splice(
          objectJs.findindex((x) => {
            return x === id;
          }),1
        );
        localStorage.setItem("object",JSON.stringify(objectJs));
        localStorage.setItem("id",JSON.stringify(objectJs2));
        console.log(id);
        console.log(objectJs.length);
        console.log(line2);
        //location.href = "panier.html";
        if (objectJs.length === 0) {
          localStorage.removeItem("object");
          localStorage.removeItem("id");
        }
      });

解决方法

更新findIndex函数以在数组内部然后在属性中查找

据我了解,内部数组始终由两个元素组成:首先是一个具有“ id”属性的对象,然后是一个字符串。

基于此,我认为您应该可以通过将group by team_id having .... order by team_id替换为return x === id来找到ID。

,
objectJs2.splice(
      objectJs2.findIndex((x) => {
        return x === id;
      }),1
    );
    objectJs.splice(
      objectJs.findIndex((x) => {
        return x[0]._id === id;
      }),1
    );
    objectJs.splice(
      objectJs.findIndex((x) => {
        return x[1] === lense;
      }),1
    );

最重要的是,该产品无法使用supprim 2产品

butonAll[i].addEventListener("click",function (e) {
    console.log("supprime moi");
    const id = e.target.getAttribute("data-id");
    const lense = e.target.getAttribute("data-lenses");

    objectJs2.splice(
      objectJs2.findIndex((x) => {
        return x === id;
      }),1
    );
    objectJs.splice(
      objectJs.findIndex((x) => {
        return x[0]._id === id && X[1] === lense;
      }),1
    );
    

但最重要的是,此解决方案效果很好

方法x [0] ._ id非常有效,谢谢您的回答。但是还有一个小问题要继续解决,那就是事实:如果两个对象具有相同的id,但是即使它们的镜头不存在,它也会像我在第一篇博文中那样删除最后一个对象。我向已删除的按钮添加了一个data-lenses属性,并尝试添加该方法,如果我在对象上进行了2个拼接,它将为我删除2个乘积,因此解决方案是制作单个拼接对象并返回x [0] ._ id = == id && x [1] ===镜头。有用 这是我上面的新代码