2017-10-20 52 views
0

的指數我有此數組:查找陣列,並得到結果

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"}]; 

有人可以給我一個建議,如何找到OBJ在ARR並返回obj在哪裏... Thx提前,所以很抱歉的語言!

回答

0

嘗試以下操作:

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()。這種方法需要在操作中涉及的對象的屬性的嚴格順序。如果此要求不可接受,您可以用其他方式實施此類比較。

+0

Thx,它的工作很好,但是,如果我有這樣的數組像var obj2 = [{option:「Trasparente」},{option:「Rossi」}] –

+0

只要做一個比較嚴格:'let found = arr .find(a => a.attributes [0] .option === obj [0] .option && a.attributes [1] .option === obj [1] .option);' - 取決於您的需要,比較器可以用百種方式定製 – dhilt

+0

Thx,這個解決方案很簡單,但是在這種編程語言中,這是新手。 Thx再次! –

1

,我認爲這可以幫助你:

獲取對象:

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表達式) 。