Javascript 在另一个数组中查找数组并获取结果的索引

Javascript 在另一个数组中查找数组并获取结果的索引,javascript,arrays,typescript,Javascript,Arrays,Typescript,我有这个阵列: var arr = [ {attributes: [{name: "Impregnante", slug: "impregnante", option: "Nessuno"}, {name: "Tegole", slug: "tegole", option: "Senza Tegole"}], id:430, price:"1000"}, {attributes: [{name: "Impregnante", slug: "impregnante", option: "N

我有这个阵列:

    var arr = [
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Nessuno"}, {name: "Tegole", slug: "tegole", option: "Senza Tegole"}], id:430, price:"1000"},
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Nessuno"}, {name: "Tegole", slug: "tegole", option: "Rossi"}], id:431, price:"1025"},
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Nessuno"}, {name: "Tegole", slug: "tegole", option: "Verdi"}], id:432, price:"1025"},
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Trasparente"}, {name: "Tegole", slug: "tegole", option: "Senza Tegole"}], id:433, price:"1100"},
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Trasparente"}, {name: "Tegole", slug: "tegole", option: "Rossi"}], id:434, price:"1125"},
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Trasparente"}, {name: "Tegole", slug: "tegole", option: "Verdi"}], id:435, price:"1125"},
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Noce"}, {name: "Tegole", slug: "tegole", option: "Senza Tegole"}], id:436, price:"1100"},
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Noce"}, {name: "Tegole", slug: "tegole", option: "Rossi"}], id:437, price:"1125"},
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Noce"}, {name: "Tegole", slug: "tegole", option: "Verdi"}], id:438, price:"1125"},
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Castagno"}, {name: "Tegole", slug: "tegole", option: "Senza Tegole"}], id:439, price:"1100"},
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Castagno"}, {name: "Tegole", slug: "tegole", option: "Rossi"}], id:440, price:"1125"},
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Castagno"}, {name: "Tegole", slug: "tegole", option: "Verdi"}], id:441, price:"1125"}]
和另一个阵列:

var obj =  [{name: "Impregnante", slug: "impregnante", option: "Trasparente"}, {name: "Tegole", slug: "tegole", option: "Rossi"}];
有人能给我一个建议,如何在arr中找到obj并返回obj所在的id。。。 提前和Thx等抱歉的语言

尝试以下操作:

const parseData = (arr, obj) => {
  let found = arr.find(a => JSON.stringify(a.attributes) === JSON.stringify(obj));
  return found ? found.id : null;
}

console.log(parseData(arr, obj)); //434

为了提供对象比较,我使用了
JSON.stringify()
。这种方法要求对操作中涉及的对象的属性进行严格的排序。如果此要求不可接受,您可以通过其他方式进行比较。

我认为这可以帮助您:

获取对象:

var arrFilter = arr.filter(function(a, b){ return JSON.stringify(a.attributes) == JSON.stringify(obj) });

// if you need the property ID
arrFilter[0].id
获取索引:

var idx = arr.findIndex(function(a, b){ return JSON.stringify(a.attributes) == JSON.stringify(obj) })

如果需要,可以使用箭头函数(Lambda表达式)。

Thx,它工作得很好,但是,如果我有像var obj2=[{option:“Trasparente”},{option:“Rossi”}]这样的数组怎么办?只需进行严格的比较:
let found=arr.find(a=>a.attributes[0]。option==obj[0]。option&&a.attributes[1]。option==obj[1]。option)--根据您的需要,比较器可以定制成100种方式,解决方案很简单,但我对这种编程语言非常熟悉。又来了!