方法splice()et findindex()javascript问题搜索板
我的问题是,我有一个名为object的数组,其中有几个对象本身在一个数组中。 如何使用splice和findindex方法检索它们? 目前,在我当前的代码中,当我单击从篮子中删除的任何按钮时,它将从数组中删除最后一个对象。 我还有另一个object2,它是一个只包含id的简单数组,并且要使用的方法工作得非常好。 我想通过按id搜索从对象数组中删除对象。 对于示例object2数组,该方法在我的代码中运行得很好,但不适用于对象数组。请帮助我 对象:方法splice()et findindex()javascript问题搜索板,javascript,arrays,splice,Javascript,Arrays,Splice,我的问题是,我有一个名为object的数组,其中有几个对象本身在一个数组中。 如何使用splice和findindex方法检索它们? 目前,在我当前的代码中,当我单击从篮子中删除的任何按钮时,它将从数组中删除最后一个对象。 我还有另一个object2,它是一个只包含id的简单数组,并且要使用的方法工作得非常好。 我想通过按id搜索从对象数组中删除对象。 对于示例object2数组,该方法在我的代码中运行得很好,但不适用于对象数组。请帮助我 对象: (5) [Array(2), Array(2),
(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");
}
});
更新findIndex函数以查看数组内部,然后查看属性
据我所知,内部数组总是由两个元素组成:首先是一个具有属性“id”的对象,然后是一个字符串
基于此,我认为您应该能够通过用x[0]替换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
);
这上面没有工作Supplim 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,但是它们的镜头不在那里,即使它移除了最后一个物体,就像我第一篇文章中的情况一样。我在“已删除”按钮中添加了一个“数据镜头”属性,并尝试添加该方法,如果我在对象上进行了两次拼接,它将为我删除两个产品,因此解决方案是创建一个拼接对象并返回x[0]。\uid==id&&x[1]==lense。它起作用了
上面是我的新代码请在你的句子中添加interfunction。很难理解你的问题是什么。你的对象数组是什么?
?我的数组对象在我的帖子的顶部,就在数组对象2和我的代码和下面。对象数组包含5个数组,其中包含自己的2个数组,id在最后的数组中