Javascript 如何查找包含特定数组的数组的索引?

Javascript 如何查找包含特定数组的数组的索引?,javascript,arrays,Javascript,Arrays,我正在开发一个电子商务购物车,在下面的购物车中,每个商品都可能有一些“变体”,商品模型如下所示,其中Articoli==商品,每个Articoli都可能有一个变体数组: class Articoli { constructor(id, titolo, qta, prezzo, prezzo_s, img, varianti) { this.id = id; this.titolo = titolo; this.qta = qta;

我正在开发一个电子商务购物车,在下面的购物车中,每个商品都可能有一些“变体”,商品模型如下所示,其中Articoli==商品,每个Articoli都可能有一个变体数组:

class Articoli {
    constructor(id, titolo, qta, prezzo, prezzo_s, img, varianti) {
        this.id = id;
        this.titolo = titolo;
        this.qta = qta;
        this.prezzo = prezzo;
        this.prezzo_s = prezzo_s;
        this.img = img;
        this.varianti = varianti;
    }
}

class Varianti {
    constructor(id, titolo, stato, prezzo) {
        this.id = id;
        this.titolo = titolo;
        this.stato = stato;
        this.prezzo = prezzo;
    }
}
现在我必须更新购物车中每个添加项目的数量。每个添加的项目如果没有任何变体,则具有id
cd购物车id
,而具有变体的项目具有id
cd购物车var id
,因此,当添加两个没有任何变体的项目时,数量只会更新,而如果相同的项目添加了一些变体,则会在购物车中创建一个新项目,但下面是问题我可以添加具有相同变体的项目,因此必须更新其数量,但到目前为止,我一直在寻找ID等于的数组索引,因此:

var objIndex = articoli.findIndex((obj => obj.id == id))
但是,ID在两个添加的项目中都是相等的,例如,对于一个项目
cd cart ID
而言,ID等于7891,甚至在一个新添加的项目中,其组件ID
cd cart var ID
ID等于数组中的7891

因此,我打算通过检查objectIndex中的ID和变量来获取更新数量的objectIndex,如下所示:

var objIndex = articoli.findIndex((obj => obj.id == id && obj.varianti == articolo.varianti))

其中articolo.varianti是对象varianti的数组,但它在任何情况下都会返回索引-1,即使我添加了两个没有任何变量的项,所以
varianti=[]

看起来像是您的
id
obj。varianti
未定义的。您可以使用以下示例查找索引:

Articoli类{
建造商(id、titolo、qta、prezzo、prezzo_s、img、varianti){
this.id=id;
this.titolo=titolo;
this.qta=qta;
this.prezzo=prezzo;
this.prezzo_s=prezzo_s;
this.img=img;
this.varianti=varianti;
}
}
让洋蓟=[
新文章(1,“标题1”、“qta 1”、“序言1”、“序言1”、“img 1”、“Variati 1”),
新文章(1,“标题111”、“qta 1”、“prezzo1”、“prezzo_s 1”、“img 1”、“varianti 111”),
新文章(1,“标题2”、“qta 2”、“序言2”、“序言2”、“img 2”、“变体2”)
]
让objToFind=新文章(1,“标题111”、“qta 1”、“prezzo1”、“prezzo_s 1”、“img 1”、“varianti 111”);
var objIndex=articolies.findIndex((obj=>obj.id==objToFind.id&&
obj.varianti==objToFind.varianti))

控制台日志(objIndex)
你能举一个例子吗
articolo.varianti
articolo
是一个数组时,你在哪里应用
findIndex
,那么它可能没有
articolo.varianti
。你应该把它放在一个变量中,。。。可能只是
varianti
=
当操作数是两个不同的数组时,总是返回false。您需要比较数组中的每个元素。正确,默认情况下,只有当变量指向同一内存地址(即堆上的同一对象)时,才
array1==array2//true
。默认情况下,JavaScript会比较对象的内存地址。@trincot当然明白了,我会在这一点上比较每个元素,谢谢!