【问题标题】:method splice () et findindex () javascript problem search board方法 splice() et findindex() javascript问题搜索板
【发布时间】:2020-10-17 21:38:25
【问题描述】:

我的问题是我有一个名为 object 的数组,其中有几个对象本身就在一个数组中。 如何使用 splice 和 findindex 方法检索它们? 目前使用我当前的代码,当我单击从篮子中删除的任何按钮时,它会从数组中删除最后一个对象。 我有另一个 object2,它是一个仅包含 id 的简单数组,并且使用的方法效果很好。 我想通过 id 搜索从对象数组中删除一个对象。 使用示例 object2 数组,该方法在我的代码中运行良好,但不适用于对象数组,请帮助我。

对象:

(5) [Array(2), Array(2), 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");
        }
      });

【问题讨论】:

  • 请在您的句子中添加注释。很难理解您的问题是什么。
  • 你的object array 是什么?
  • 我的数组对象在我的帖子顶部通知,就在数组 object2 和我的代码之前及下方
  • 对象数组包含 5 个数组,其中包含 2 个数组,id 在这些最后的数组中

标签: javascript arrays splice


【解决方案1】:

更新 findIndex 函数以查看数组内部,然后查看属性

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

基于此,我认为您应该能够通过将return x === id 替换为x[0].id === id 来找到id。

【讨论】:

    【解决方案2】:
    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] === 镜头。有用 这是我的新代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 2013-06-08
      • 2013-03-18
      • 2015-05-17
      • 2019-10-11
      • 2013-06-27
      • 2023-03-05
      相关资源
      最近更新 更多